Zsh启动优化
主要优化方法
-
偶尔执行一次的sh脚本,不要每次都执行,需要的时候再执行,举例:
# 下面的配置保证每次打开终端的时候,都可以执行python虚拟环境的workon/mkvirtualenv/rmvirtualenv等命令 # source /usr/local/bin/virtualenvwrapper.sh # source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh # 修改为函数的形式,需要执行python虚拟环境命令的时候再执行这个函数 start_virtualenvwrapper() { source /Library/Frameworks/Python.framework/Versions/3.6/bin/virtualenvwrapper.sh }
-
懒加载。有些命令需要的时候再加载,举例:k8s命令kubectl
# lazy load begin if [ $commands[kubectl] ]; then # Placeholder 'kubectl' shell function: # Will only be executed on the first call to 'kubectl' kubectl() { # Remove this function, subsequent calls will execute 'kubectl' directly unfunction "$0" # Load auto-completion source <(kubectl completion zsh) # Execute 'kubectl' binary $0 "$@" } fi # lazy load end
-
把类似$(brew –prefix dvm)的命令直接修改为其执行后的路径值,因为这条命令执行比较耗时
-
zsh的插件按需加载
plugins=(git z node npm brew osx extract kubectl)
具体优化措施
参考zshrc 启动速度分析和优化这篇文章
-
计算启动时间
-
真实的启动时间 time zsh -i -c exit
-
不加载任何启动命令脚本的启动时间 time zsh –no-rcs -i -c exit
-
-
使用zshprof的时候,直接使用github上源码的说明,不要根据1里面的内容