shell 打开很慢是啥原因 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
homfen
V2EX    程序员

shell 打开很慢是啥原因

  •  
  •   homfen
    homfen 2016-11-21 11:08:57 +08:00 9737 次点击
    这是一个创建于 3293 天前的主题,其中的信息可能已经有所发展或是发生改变。

    shell

    如图,打开 iterm 有个延迟,才能输入,用了 oh-my-zsh ,是啥原因? log 太多了?

    61 条回复    2017-10-18 14:29:01 +08:00
    zhouzm
        1
    zhouzm  
       2016-11-21 11:17:20 +08:00   1
    原因就是你用了 oh-my-zsh

    你可以试试 Prezto https://github.com/sorin-ionescu/prezto
    mgna17
        2
    mgna17  
       2016-11-21 11:21:29 +08:00
    标签上的那个 grep 是哪来的
    homfen
        3
    homfen  
    OP
       2016-11-21 11:50:05 +08:00
    @mgna17 这个 grep 应该是 oh-my-zsh 搞的吧
    homfen
        4
    homfen  
    OP
       2016-11-21 11:50:22 +08:00
    @zhouzm ok ,我试试
    fyibmsd
        5
    fyibmsd  
       2016-11-21 12:03:24 +08:00
    `rm -rf /var/log/asl/*`
    homfen
        6
    homfen  
    OP
       2016-11-21 13:44:15 +08:00
    @fyibmsd log 删了也没什么效果
    iwege
        7
    iwege  
       2016-11-21 14:54:47 +08:00
    prezto 貌似也有这个问题。
    Twinkle
        8
    Twinkle  
       2016-11-21 14:58:37 +08:00
    我要 3-4s 左右 /_\
    shyling
        9
    shyling  
       2016-11-21 15:00:05 +08:00 via iPhone
    因为 oh_my_sh 很卡。。。个人觉得 fish 挺快
    lukertty
        10
    lukertty  
       2016-11-21 15:13:29 +08:00
    一般第一次都要 10 秒,接下来 4 秒左右。。 zsh
    guoziyan
        11
    guoziyan  
       2016-11-21 15:17:14 +08:00
    bash 秒开
    xz
        12
    xz  
       2016-11-21 15:28:44 +08:00   1
    rm -rf /*
    我去贴吧帮你问了,听说需要运行一下这个命令
    Jobin0528
        13
    Jobin0528  
       2016-11-21 15:29:10 +08:00 via iPhone
    @zhouzm 用了,也快不了多少,
    ynyounuo
        14
    ynyounuo  
       2016-11-21 15:30:39 +08:00
    配置很重的缘故呀 - -
    我的比你的慢多了
    ynyounuo
        15
    ynyounuo  
       2016-11-21 15:34:56 +08:00
    可以用 -xv 看看你的配置究竟有多重
    ppwangs
        16
    ppwangs  
       2016-11-21 15:38:33 +08:00
    不行就换回 bash 吧,目前我还没找到非用 zsh 不可的原因
    dodo20120
        17
    dodo20120  
       2016-11-21 15:44:27 +08:00
    请先检查有没有安装 nvm , 再检查有没有安装 rbenv ,两个都没有?那检查其它的吧,有这两个其中一个在,你都快不起来
    zhouzm
        18
    zhouzm  
       2016-11-21 15:45:16 +08:00
    其实,楼主你这 1 秒左右的延迟在 zsh 应用于已经属于"快"的了。如果你真的对这样的延迟很敏感可以试试
    antigen-hs: https://github.com/Tarrasch/antigen-hs ,这个是我下面提到的 antigen 的速度增加版,号称延迟小于 0.1s

    @lukertty
    @Twinkle 3~4s 也太慢了,建议试试 antigen: https://github.com/zsh-users/antigen , Antigen is to zsh, what Vundle is to vim
    antigen 可以只加载你自己的需要的模块,同时还有 cache 功能,第二次打开时间能和楼主图上效果差不多 1s 左右。
    dodo20120
        19
    dodo20120  
       2016-11-21 15:51:30 +08:00
    @zhouzm 这个快慢和加载的东西有很大关系,我自己用的 nvm 和 rbenv 两项,随便一个就拖个 1s 以上,特别是 nvm ,用延迟加载又不方便
    bjzhou1990
        20
    bjzhou1990  
       2016-11-21 15:59:14 +08:00   1
    慢是因为启动加载项太多,如果有 nvm 一定要删,这东西太慢了,启动命令改成 zsh -x 看下卡在什么地方了
    dodo20120
        21
    dodo20120  
       2016-11-21 16:02:03 +08:00
    @bjzhou1990 有没有 nvm 替代品?以前是 rbenv 慢,现在 rbenv 好多了,这 nvm 不能忍了要
    bjzhou1990
        22
    bjzhou1990  
       2016-11-21 16:04:36 +08:00
    @dodo20120 nvm 是用来更新 node ?直接 brew 不就好了
    zhouzm
        23
    zhouzm  
       2016-11-21 16:14:55 +08:00
    @dodo20120 你用的是 antigen 吗?我刚才试了一下,不加载 nvm 和 rbenv 约 1.5s ,加载大约 2s ,都是 antigen
    reset 后运行一次,测试第二次的时间。

    加载了以下模块:
    antigen use oh-my-zsh
    antigen bundle pip
    antigen bundle nvm
    antigen bundle rbenv
    antigen bundle autojump
    antigen bundle brew
    antigen bundle brew-cask
    antigen bundle colored-man
    antigen bundle z
    antigen bundle zsh-users/zsh-syntax-highlighting
    antigen bundle zsh-users/zsh-history-substring-search ./zsh-history-substring-search.zsh
    antigen theme agnoster
    antigen apply
    singlepig
        24
    singlepig  
       2016-11-21 16:24:40 +08:00
    有同感,感觉是插件装多了,一些用不到的功能可以禁用掉。
    henryshen233
        25
    henryshen233  
       2016-11-21 16:44:20 +08:00 via iPhone
    要更新了吧
    dodo20120
        26
    dodo20120  
       2016-11-21 16:48:27 +08:00
    @zhouzm 用的 oh-my-zsh, nvm 慢是众人所知的,直接用 bash 我都觉得这货慢,不过将就用吧
    zhx1991
        27
    zhx1991  
       2016-11-21 17:06:17 +08:00
    zsh 加载东西多

    但是这个不是很影响吧? 谁成天关闭打开 shell
    wxcszh
        28
    wxcszh  
       2016-11-21 17:15:15 +08:00
    我的需要 3 秒多。。 oh-my-zsh 加载东西有点多。。。
    homfen
        29
    homfen  
    OP
       2016-11-21 17:21:19 +08:00
    @dodo20120 还真装了 nvm
    homfen
        30
    homfen  
    OP
       2016-11-21 17:24:28 +08:00
    @zhouzm 这个图貌似加速过了,实际也是 3~4 秒,换成 prezto 后现在是 1 秒左右,可以接受了
    homfen
        31
    homfen  
    OP
       2016-11-21 17:27:42 +08:00
    @bjzhou1990 nvm 这么坑,主要是 node 版本切换方便,不然也不装了
    homfen
        32
    homfen  
    OP
       2016-11-21 17:36:35 +08:00
    就是 nvm 搞的鬼, prezto 加了 nvm 的配置也变慢了
    knightdf
        33
    knightdf  
       2016-11-21 17:44:30 +08:00
    请问这个 1s,2s,3s 有什么意义.....?常年不关 shell 挂个 tmux 的重来不关心也没感觉
    ynyounuo
        34
    ynyounuo  
       2016-11-21 17:46:05 +08:00
    @homfen nvm 众所周知的慢啊
    只需要版本切换的话,用 n 就好
    cxbig
        35
    cxbig  
       2016-11-21 17:51:25 +08:00
    加载的东西太多,建议把不常用的 plugin 去掉。
    mcfog
        36
    mcfog  
       2016-11-21 18:17:55 +08:00
    fish 秒开,而且不需要什么配置开箱即用

    当然,别装 oh-my-fish
    dodo20120
        37
    dodo20120  
       2016-11-21 21:16:32 +08:00
    @mcfog
    以前用了阵 fish ,但不支持 bash
    lilydjwg
        38
    lilydjwg  
       2016-11-21 21:27:20 +08:00
    我以前历史记录 10w 行,结果加载很慢,改成 2w 了。现在基本能在 0.2 秒内启动。

    你可以 zsh -x 然后看看哪里比较慢。我忘记了当时我是怎么找到瓶颈的……
    lilydjwg
        39
    lilydjwg  
       2016-11-21 21:31:24 +08:00
    PS: 我不用 oh-my-zsh ,东西太多,怕太慢或者出现意外的行为。我曾经对我的 zshrc 优化过,能少用外部命令就少用外部命令。现在 zsh 从启动到看到第一个提示符,共有六次 execve ,一次 zsh (自己),两次 uname ,一次 stty ,一次 systemctl --version ,一次 git 。根本不用 grep ,都用内建的正则+重定向搞定了。
    lilydjwg
        40
    lilydjwg  
       2016-11-21 21:39:51 +08:00
    @ppwangs zsh 又快又安全*补全又强大。另见 [http://www.slideshare.net/jaguardesignstudio/why-zsh-is-cooler-than-your-shell-16194692](Why Zsh is Cooler than Your Shell)。

    * 指的是粘贴多行文本也不会立即执行,使得用户有机会确认。特别是从网页复制命令的时候,网页可以把部分命令隐藏起来,但是[会复制到]( https://web.archive.org/web/20150629051828/http://www.soimort.org/posts/154/)。不用插件的话,此功能至少需要 zsh 5.0 。
    rashawn
        41
    rashawn  
       2016-11-21 23:42:30 +08:00 via iPhone
    这个常年不用关的 就是用 tmux 的时候推送传不到系统通知那里
    ceclinux
        42
    ceclinux  
       2016-11-22 02:16:50 +08:00
    我也觉得这个速度正常……
    markx
        43
    markx  
       2016-11-22 03:09:29 +08:00
    @zhouzm 我用的 prezto ,依然很慢。禁用某些插件的话可以很快,可是偏偏那些插件提供了我想要的功能。
    xcv58
        44
    xcv58  
       2016-11-22 04:04:39 +08:00   1
    @homfen @dodo20120 @markx 你们的原因如果是因为 nvm.
    可以试一下我的方法,我以前开一个 tab 也是 3 秒+。后来自己做了个 lazy load 现在都是秒开。 感觉比 antigen 要轻量一些。

    https://medium.com/@xcv58/if-your-zsh-starts-very-slow-cb1434ea16bd#.npadapawz
    https://github.com/xcv58/prezto/tree/master/modules/lazy-load
    pollow
        45
    pollow  
       2016-11-22 07:53:32 +08:00
    @dodo20120 只开了 git brew autojump osx 四个,也要四五秒……
    Gem
        46
    Gem  
       2016-11-22 08:15:40 +08:00
    没有升级到最新版的时候,秒开,现在升级到最新版,速度马上卡顿了。
    mrytsr
        47
    mrytsr  
       2016-11-22 08:47:35 +08:00 via Android
    fish 保平安
    dodo20120
        48
    dodo20120  
       2016-11-22 08:50:49 +08:00
    @xcv58 lazy load 用过,是快了,但各种问题,比如有的软件依赖 npm ,这时就不行了,
    Tink
        49
    Tink  
    PRO
       2016-11-22 09:15:03 +08:00
    我的 ohmyzsh 貌似没有延迟啊
    mcfog
        50
    mcfog  
       2016-11-22 09:29:31 +08:00
    @dodo20120 常用的不一样的也就是圆括号和&&了吧, bash 脚本还是可以直接运行的嘛,反正没感觉不习惯
    hipeng
        51
    hipeng  
       2016-11-22 09:38:28 +08:00
    啥系统,看下 /etc/bash_completion.d/目录下的文件,先移除掉看看
    dodo20120
        52
    dodo20120  
       2016-11-22 10:38:34 +08:00
    @mcfog  我前几年用的时候是不兼容,现在好久没用了,不太清楚了
    finian
        53
    finian  
       2016-11-22 10:48:07 +08:00
    换 fish 可破
    focux
        54
    focux  
       2016-11-22 10:57:15 +08:00
    sudo rm -rf /private/var/log/asl/*.asl
    dodo20120
        55
    dodo20120  
       2016-11-22 11:43:26 +08:00
    @finian nvm 那个速度,换鲨鱼也没用
    Niris
        56
    Niris  
       2016-11-22 13:24:32 +08:00
    好多人提到 nvm 很慢,把下面这行注释掉就基本可以解决问题。

    https://github.com/creationix/nvm/blob/v0.32.1/nvm.sh#L3200
    xcv58
        57
    xcv58  
       2016-11-22 13:33:11 +08:00 via iPad
    @dodo20120 我的 lazy_load the 不一样。
    zander
        58
    zander  
       2016-12-09 22:11:44 +08:00
    antigen 和 zplug 都可以试试。
    zplug 的可定义性更强,速度(据称)更快。
    motmist
        59
    motmist  
       2017-10-18 11:42:12 +08:00
    @zander 感谢推荐 zplug,它是并行加载,速度很快
    motmist
        60
    motmist  
       2017-10-18 11:48:27 +08:00
    我 13 年 rmbp,512ssd(非 pcie) 原来用 antigen 加个 nvm ,启动 7、8 秒,优化后也要两三秒,都不敢装插件,用了 zplug 真的不要太快,插件也敢装了
    zander
        61
    zander  
       2017-10-18 14:29:01 +08:00
    @motmist 我自己换了 prezto,有时间你也可以试试。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5079 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 09:31 PVG 17:31 LAX 01:31 JFK 04:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86