zsh安装后需验证默认shell并重载会话,oh-my-zsh应通过gitee手动安装,powerlevel10k需配nerd fonts,插件加载顺序及路径须严格正确,locale需支持utf-8。

能直接装,但跳过验证和重载步骤,90%的人会卡在“以为装好了,其实还在用 bash”
确认 zsh 已安装并设为默认 shell
很多人执行完 chsh -s $(which zsh) 就关终端重开,结果 echo $SHELL 还是 /bin/bash——这是因为 chsh 只改登录 shell,不改当前会话。新开终端后必须手动验证:
- 运行
echo $SHELL,输出应为/bin/zsh或/usr/bin/zsh(别硬写路径,用$(which zsh)) - 运行
ps -p $$看当前进程名,确保是zsh而非bash - 若
chsh报PAM authentication failure,尝试加sudo:sudo chsh -s $(which zsh) $USER(部分系统允许) - Ubuntu/Debian 通常自带 zsh;CentOS/RHEL 需
sudo yum install zsh或sudo dnf install zsh;Kali 2024.2 默认已装,但精简镜像可能没包含
用 Gitee 镜像手动安装 oh-my-zsh
官方 install.sh 在国内大概率超时或卡死在 “Cloning Oh My Zsh…”,且会覆盖已有 ~/.zshrc。更稳的做法是手动拉取:
- 执行:
git clone --depth=1 https://gitee.com/mirrors/oh-my-zsh.git ~/.oh-my-zsh - 复制模板配置:
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc - 在
~/.zshrc开头加一行:export ZSH="$HOME/.oh-my-zsh"(漏掉这行,后续插件全加载失败) - 检查
ZSH_THEME是否设为合法值,如"robbyrussell";空值或拼错会导致启动报错lib/misc.zsh:3: parse error near 'then'
启用 powerlevel10k 主题必须配字体
Powerlevel10k 是目前响应最快的主题,但缺字体就显示方块或问号,不是主题没生效,是图标渲染失败:
- 先装 Nerd Fonts:Kali/Debian 系用
sudo apt install fonts-jetbrains-mono-ttf;其他发行版需手动下载 JetBrainsMono Nerd Font 并放到~/.local/share/fonts/,再运行fc-cache -fv - 在终端设置里把字体显式改为
JetBrainsMono Nerd Font(GNOME Terminal:Preferences → Profiles → Text → Custom font) - 克隆主题:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k - 改
~/.zshrc中的ZSH_THEME行为:ZSH_THEME="powerlevel10k/powerlevel10k" - 运行
source ~/.zshrc后会自动触发首次配置向导,按提示选即可
zsh-syntax-highlighting 和 zsh-autosuggestions 插件顺序不能错
这两个插件不是 oh-my-zsh 自带的,手动克隆后加载顺序错了就会相互干扰:高亮失效、建议不弹、甚至终端卡住。
- 先克隆到正确路径:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$ZSH/custom}/plugins/zsh-syntax-highlighting - 再克隆另一个:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$ZSH/custom}/plugins/zsh-autosuggestions - 在
~/.zshrc的plugins=(...)数组里,zsh-syntax-highlighting必须排在zsh-autosuggestions前面 - 插件路径必须严格匹配:不能少
git后缀,也不能多一层目录;${ZSH_CUSTOM}未定义时会 fallback 到$ZSH/custom,所以设好ZSH是前提
最常被忽略的是 locale 和字体支持:agnoster 主题依赖 UTF-8,powerlevel10k 依赖 Nerd Fonts,而 source ~/.zshrc 不会自动重载 locale 设置——如果终端乱码或提示符断行,先查 locale | grep UTF,确保 LANG 是 en_US.UTF-8 或类似值。











