zsh通常已预装但需设为默认shell,oh-my-zsh须手动安装且注意权限、路径与网络问题;安装后须检查.zshrc生成、主题有效性及插件名准确性;启动慢常因compinit缓存、插件加载或.zshrc中耗时命令导致。

zsh 本身是绝大多数 Linux 发行版的预装组件,不用“安装”也能直接用;但 oh-my-zsh 不是系统自带,得手动拉取,而且默认安装方式有权限和路径陷阱。
确认 zsh 是否已存在并设为默认 shell
很多用户以为没装 zsh,其实只是没启用。先查:
which zsh —— 如果输出类似 /usr/bin/zsh 或 /bin/zsh,说明已存在
echo $SHELL —— 看当前默认 shell 路径,不是 zsh 路径就还没切过去
切换默认 shell 需用 chsh,不能只改 $SHELL 环境变量:
- 运行
chsh -s $(which zsh),输入密码确认 - 退出终端重进,或新开 terminal,再执行
echo $SHELL验证 - 如果提示
chsh: PAM authentication failure,说明当前用户没被允许修改 shell(常见于某些企业/教育环境),这时别硬改,先用zsh命令临时进入
用 curl 安装 oh-my-zsh 的正确姿势
oh-my-zsh 官方推荐的 curl 安装脚本会把整个框架拉到 $HOME/.oh-my-zsh,但它默认不检查目标目录是否已存在,也不处理权限冲突:
- 如果之前手动删过
.oh-my-zsh但残留了部分文件(比如.zshrc),新脚本可能跳过覆盖,导致配置错乱 - 用
sudo curl是错的 ——oh-my-zsh必须属于当前用户,sudo会导致后续插件、主题、自定义脚本全部权限异常 - 国内网络直连
raw.githubusercontent.com经常超时,可加--retry 3或换镜像源(如清华源:https://ghproxy.com/https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh) - 安装命令应为:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装后必须立刻检查的三件事
脚本跑完不代表能用,常见断点在这几个地方:
-
~/.zshrc文件是否生成?内容里有没有重复的source $ZSH/oh-my-zsh.sh?如果有两行,zsh 启动会报command not found: compinit -
ZSH_THEME设成"robbyrussell"是安全的,但设成未下载的主题(比如"powerlevel10k")会导致启动卡住 —— 先用默认主题验证流程通不通 - 插件列表
plugins=(git)里写的插件名必须和$ZSH/plugins/下的目录名完全一致(大小写敏感),git可以,Git就不行
zsh 启动慢?大概率是这些环节在拖
oh-my-zsh 默认加载一堆东西,但真正影响速度的往往不是主题,而是初始化逻辑:
-
compinit每次都重新生成缓存?加上zstyle ':completion:*' use-cache on和zstyle ':completion:*' cache-path "$HOME/.zsh/cache"可提速 - 插件太多(尤其
autojump、zsh-autosuggestions)且没预编译?把它们移到.zshrc底部,或用zinit/antigen延迟加载 -
~/.zshrc里写了耗时命令(比如curl查 IP、date计算倒计时)?zsh 启动时同步执行,就会卡住
最简单的验证方式:运行 zsh -i -c exit,看耗时。如果超过 300ms,就得逐段注释 .zshrc 排查。










