全局配置 Zsh + oh-my-zsh

Posted by sysin on 2021-04-29
Estimated Reading Time 4 Minutes
Words 1.1k In Total
Viewed Times

请访问原文链接:全局配置 Zsh + oh-my-zsh,查看最新版。原创作品,转载请保留出处。

作者:gc(at)sysin.org,主页:www.sysin.org

Linux 中使用 oh-my-zsh 配置 zsh 默认仅对当前用户有效,新建或者切换用户后,仍然恢复到了默认的 bash,非常不方便。本文描述全局配置的方法,新用户将默认使用 zsh 并加载统一的配置文件。

本文写作环境基于Ubuntu 20.04 和 CentOS 8,其他版本类似,可以参照。

准备 zsh

  • 查看当前 shell
1
echo $SHELL

返回结果:

1
/bin/bash
  • 安装 zsh

CentOS:

1
2
3
yum install -y zsh
# or
dnf install -y zsh

Ubuntu:

1
sudo apt install zsh
  • 设置默认 shell
1
sudo chsh -s /bin/zsh

请在 root 用户下切换 shell。

返回结果如下,表示切换完成(下载安装 oh-my-zsh 成功后也会提示切换)

1
2
3
# sudo chsh -s /bin/zsh
Changing shell for root.
Shell changed.

在 CentOS 8 中可能报错 Command not found,执行 sudo dnf install util-linux-user

  • 安装 git

执行:

1
2
3
4
# CentOS
yum install -y git
# Ubuntu
sudo apt install git

全局配置 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-zshexport 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
  • 新增用户单独配置 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"' >> /etc/skel/.zshrc

全局配置插件

全局安装插件(安装到 /etc/oh-my-zsh/custom/plugins/)

zsh-autosuggestions:作用是根据历史输入命令的记录即时的提示,然后按键盘 → 即可补全。

(个人不推荐这个插件。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

(该插件对性能似乎有一点点影响,请根据需要启用。)

作用如图:

incr

1
2
3
mkdir /etc/oh-my-zsh/custom/plugins/incr
curl -fsSL https://mimosa-pudica.net/src/incr-0.2.zsh -o /etc/oh-my-zsh/custom/plugins/incr/incr.zsh
echo "source /etc/oh-my-zsh/custom/plugins/incr/incr.zsh" >> /etc/skel/.zshrc

使用用户配置文件

  • 改变新用户的默认 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
2
3
cp /etc/skel/.zshrc ~/.zshrc
mkdir -p ~/.oh-my-zsh/cache
source ~/.zshrc

参考:创建管理员账号的正确姿势(默认配置)。

在 visudo (/etc/sudoers)默认配置下,创建管理员账号的命令如下:

CentOS:

1
2
useradd -m -s /bin/zsh -G wheel user1  #user1 为用户名
passwd user1 #为 user1 设置密码

Ubuntu:

1
2
useradd -m -s /bin/zsh -G sudo user1  #user1 为用户名
passwd user1 #为 user1 设置密码

备注:

-m 创建同名 home 目录

-s 指定 shell

-G 修改附加属组


捐助本站 ❤️ Donate


如果文章中使用的内容或图片侵犯了您的版权,请联系作者删除。如果您喜欢这篇文章或者觉得它对您有所帮助,欢迎您发表评论,也欢迎您分享这个网站,或者赞赏一下作者,谢谢!


支付宝打赏 微信打赏

赞赏一下



1000000