之前自己的服务器一直在使用 bash,虽然说没有什么短板,但是也没有什么亮点,中规中矩。后来偶然接触到了 Oh My ZSH 这个项目,发现了好多实用的功能,比如 extract/x 辅助解压命令、Git 工作区信息提示、z 跳转、zsh suggestions 智能补全等等,瞬间就想放弃 bash 了😂(喜新厌旧实锤)。
今天就整理记录一下自己在给开发服务器(Debian 10.10)折腾时遇到的一些坑。
一键运行脚本见文章末尾。
1 安装 zsh 及相关依赖包
首先需要通过 apt
安装 zsh
终端及一些与 Oh My Zsh 有关的依赖包,比如 curl、wget等:
apt install -y zsh git tar zip unzip p7zip-full curl wget build-essential
然后将默认终端切换至 zsh
:
chsh -s $(which zsh)
2 安装 Oh My Zsh
下载安装脚本并通过 unattended
标记来实现非交互式安装:
# 下载安装脚本
wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
# 非交互式安装
sh install.sh --unattended
3 覆盖 zsh 配置
我们需要开启一些 zsh
常用的插件,比如 extract/x 自动解压插件、git 工作区提示等。不需要手动修改配置,我们使用 cat
命令来一键写入配置:
cat > $HOME/.zshrc <<'EOF'
export ZSH="/root/.oh-my-zsh"
ZSH_THEME="fino"
HIST_STAMPS="yyyy-mm-dd"
DISABLE_MAGIC_FUNCTIONS=true
plugins=(
command-not-found
cp
extract
git
sudo
zsh-syntax-highlighting
zsh-autosuggestions
z
)
source $ZSH/oh-my-zsh.sh
# Change to UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
EOF
简单解释下 cat
命令的语法:
cat > $HOME/.zshrc <<'EOF'
something here
EOF
首先,cat
先通过输出符号 >
将输出文件声明为 $HOME/.zshrc
,这里的 >
表示覆盖,即不论输出文件内是否有内容,下面的文字将会覆盖文件内的内容;
随后,通过输入符号 <<
标记结束符号 EOF
,这个标记可以自定义,只需要与最后的结束符合匹配即可;
我们需要保持原样的输入到配置文件,但是系统会将我们命令行中输入的变量进行替换,所以我们要给结束符合加上引号以表示“保持原样”,也就是 cat > file <<'EOF'
。
运行上面的命令,我们将会完成 zsh
的配置文件更改。
4 从 GitHub 导入外部插件
由于 zsh-syntax-highlighting
和 zsh-autosuggestions
这两个插件并不是 Oh My Zsh 的内建插件,所以我们需要将其下载至本地:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
5 修改系统监听文件限制
在开发的过程中我们经常需要启动 dev server 来监听文件修改并进行热加载,这时经常会触发文件系统监听数量限制。
解决这个问题只需要下面两行:
echo fs.inotify.max_user_watches=524288 | tee -a /etc/sysctl.conf
sysctl -p
至此,Oh My Zsh 的配置工作已经完成了,你可以通过退出终端并重新登录的方式来尝试使用 zsh
了。

下一篇文章我们将会配置一些常用的软件包来提高我们的开发效率。
附录:一键运行脚本
可以通过该 GitHub Gist 获取该脚本并执行:
wget -O - https://775.ink/2hx2zj0w4av4 | bash