请访问原文链接:Linux 全局配置 Zsh + oh-my-zsh,查看最新版。原创作品,转载请保留出处。
作者主页:www.sysin.org
抄袭者 macz、qq_23930765、hanzheng260561728 请远离本站!!!
Linux 中使用 oh-my-zsh 配置 zsh 默认仅对当前用户有效,新建或者切换用户后,仍然恢复到了默认的 bash,非常不方便。本文描述全局配置的方法,新用户将默认使用 zsh 并加载统一的配置文件。
本文写作环境基于Ubuntu 20.04 和 CentOS 8,其他版本类似,可以参照。
准备 zsh
- 查看当前 shell
1 | echo $SHELL |
返回结果:
1 | /bin/bash |
- 安装 zsh
CentOS:
1 | yum -y instal zsh |
Ubuntu:
1 | sudo apt install zsh |
- 为 root 设置默认 shell
1 | sudo chsh -s /bin/zsh |
- 为特定用户设置默认 shell
1 | sudo chsh -s /bin/zsh sysin |
返回结果如下,表示切换完成(下载安装 oh-my-zsh 成功后也会提示切换)
1 | sudo chsh -s /bin/zsh |
在 CentOS 8 中可能报错 Command not found,执行
sudo dnf install util-linux-user
- 安装 git
执行:
1 | CentOS |
全局配置 zsh
注意:以下全局配置相关命令需要 root 权限,请切换到 root 账号,或者使用 sudo。
- 切换成 root
1 | su |
- 全局安装 zsh 到 /etc 目录
1 | git clone https://github.com/robbyrussell/oh-my-zsh.git /etc/oh-my-zsh |
- 从模板文件复制 .zshrc 创建默认配置文件(新用户将使用该配置文件)
1 | cp /etc/oh-my-zsh/templates/zshrc.zsh-template /etc/skel/.zshrc |
- 修改 on-my-zsh 的安装目录
export ZSH=$HOME/.oh-my-zsh
为export ZSH=/etc/oh-my-zsh
1 | sed -i 's|$HOME/.oh-my-zsh|/etc/oh-my-zsh|g' /etc/skel/.zshrc |
- 更改默认主题(推荐 ys)
编辑 /etc/skel/.zshrc 文件修改:
1 | sed -i '/^ZSH_THEME=.*/c ZSH_THEME="ys"' /etc/skel/.zshrc |
- 取消每周自动检查更新
取消注释 ~/.zshrc 中的 “# DISABLE_AUTO_UPDATE=”true””
1 | sed -i 's/^#[ ]\(DISABLE_AUTO_UPDATE="true"\)/\1/' /etc/skel/.zshrc |
手动更新:omz update
(旧版命令:upgrade_oh_my_zsh)
- 新增用户单独配置 zsh cache 目录
1 | echo "export ZSH_CACHE_DIR=~/.oh-my-zsh/cache" >> /etc/skel/.zshrc |
- 创建新用户配置文件上述变量定义的缓存目录
1 | mkdir -p /etc/skel/.oh-my-zsh/cache |
参考 adduser(11.2.3. Initial environment: /etc/skel
)
- 配置 ll 别名(可选)
1 | echo 'alias ll="ls -lahF --color --time-style=long-iso"' >> /etc/skel/.zshrc |
全局配置插件
全局安装插件(安装到 /etc/oh-my-zsh/custom/plugins/)
zsh-autosuggestions:作用是根据历史输入命令的记录即时的提示,然后按键盘 → 即可补全。
(个人不推荐这个插件 (sysin)。oh-my-zsh 默认安装也自带强大的命令补全功能。)
1 | git clone https://github.com/zsh-users/zsh-autosuggestions.git /etc/oh-my-zsh/custom/plugins/zsh-autosuggestions |
编辑 /etc/skel/.zshrc,找到 plugins=(git) 这一行,修改为:
plugins=(git zsh-autosuggestions)
zsh-syntax-highlighting:语法高亮插件。
作用:命令错误会显示红色,直到你输入正确才会变绿色,另外路径正确会显示下划线。
安装:
1 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git /etc/oh-my-zsh/custom/plugins/zsh-syntax-highlighting |
配置启用插件:
编辑 /etc/skel/.zshrc
以下部分加入插件的名字
plugins=([plugins…] zsh-syntax-highlighting)
快速修改:
1 | sed -i '/^plugins=.*/c plugins=(git zsh-syntax-highlighting)' /etc/skel/.zshrc |
增强的实时自动命令补全插件:Incremental completion on zsh
(该插件对性能似乎有一点点影响,请根据需要启用。)
作用如图:
1 | mkdir /etc/oh-my-zsh/custom/plugins/incr |
使用用户配置文件
- 改变新用户的默认 shell(可选)
vi /etc/default/useradd
将 SHELL= * (比如 SHELL=/bin/sh) 改成 SHELL=/bin/zsh
修改后,使用 useradd
命令无需 -s /bin/zsh
,用户默认使用 zsh,当然也可以不修改此项,useradd
命令继续追加 -s /bin/zsh
参数。
新用户登录后,将自动复制 .zshrc 和上述 cache 目录到用户主目录下,并自动加载 zsh 配置。
- 针对现有用户
直接复制 /etc/skel/.zshrc 到 ~/
1 | cp /etc/skel/.zshrc ~/.zshrc |
参考:创建管理员账号的正确姿势(默认配置)。
在 visudo (/etc/sudoers)默认配置下,创建管理员账号的命令如下:
CentOS:
1 | useradd -m -s /bin/zsh -G wheel sysin #sysin 为用户名 |
Ubuntu:
1 | useradd -m -s /bin/zsh -G sudo sysin #sysin 为用户名 |
备注:
-m 创建同名 home 目录
-s 指定 shell
-G 修改附加属组
如果文章中使用的内容或图片侵犯了您的版权,请联系作者删除。如果您喜欢这篇文章或者觉得它对您有所帮助,欢迎您发表评论,也欢迎您分享这个网站,或者赞赏一下作者,谢谢!
赞赏一下