请访问原文链接:FreeBSD 全局配置 zsh + oh-my-zsh,查看最新版。原创作品,转载请保留出处。
作者主页:www.sysin.org
抄袭者 macz、qq_23930765、hanzheng260561728 请远离本站!!!
FreeBSD 使用 tcsh(1) 作为自己的默认 Shell。zsh 作为终极 Shell,在 FreeBSD 下也是适用的。使用 oh-my-zsh 配置 zsh 默认仅对当前用户有效,新建或者切换用户后,仍然恢复到了默认的 shell,重新配置新用户略嫌繁琐。本文描述全局配置的方法,新用户将默认使用 zsh 并加载统一的配置文件。
本文内容基于 FreeBSD 13.0
准备 zsh
- 查看当前 shell
1 | echo $SHELL |
返回结果:
1 | /bin/csh |
注意:以下全局配置相关命令需要 root 权限,请切换到 root 账号,或者使用 sudo(需手动安装配置)。
- 安装 zsh
1 | pkg install zsh |
提示消息
1 | Message from zsh-5.8: |
注意:在 FreeBSD 中非系统自带 shell 安装路径如下:
1 | type zsh |
- 设置默认 shell
根据 FreeBSD 安全建议,不要为 root 用户切换为非系统内置 shell,因为 FreeBSD 中 非内置 shell 安装路径为 /usr/local/bin/(不同于 Linux 安装在 /bin/),意外情况下可能导致文件系统无法挂载,root 用户无法访问自己的 shell。但是可以将 toor 账号配置使用 zsh 作为默认 shell。
为非 root 用户切换默认 shell:
1 | chsh -s /usr/local/bin/zsh sysin |
退出重新登录生效。
- 安装 git
执行:
1 | pkg install git |
全局配置 zsh
- 使用 GNU sed 替代 BSD sed
以下 sed 命令部分请用 gsed 替代,或者使用 alias。
1 | pkg install gsed #FreeBSD |
- 切换成 root
1 | su #切换到 root 账号,pwd 不变 |
- 全局安装 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 /usr/share/skel/dot.zshrc /usr/share/skel/dot.zshrc |
FreeBSD 用户默认配置文件目录是 /usr/share/skel/
,Linux 默认为 /etc/skel/
注意: /usr/share/skel/
中点开头的文件和文件夹(隐藏属性)都加上 dot,非隐藏文件和文件夹命名不变。
1 | ls -ahlFT |
- 修改 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' /usr/share/skel/dot.zshrc |
- 更改默认主题(推荐 ys)
编辑 /usr/share/skel/dot.zshrc 文件修改:
1 | sed -i '/^ZSH_THEME=*/c ZSH_THEME="ys"' /usr/share/skel/dot.zshrc |
- 取消每周自动检查更新
取消注释 ~/.zshrc 中的 “# DISABLE_AUTO_UPDATE=”true””
1 | sed -i 's/^#[ ]\(DISABLE_AUTO_UPDATE="true"\)/\1/' /usr/share/skel/dot.zshrc |
手动更新:omz update
(旧版命令:upgrade_oh_my_zsh)
- 新增用户单独配置 zsh cache 目录
1 | echo "export ZSH_CACHE_DIR=~/.oh-my-zsh/cache" >> /usr/share/skel/dot.zshrc |
- 创建新用户配置文件上述变量定义的缓存目录
1 | mkdir -p /usr/share/skel/dot.oh-my-zsh/cache |
- 配置 ll 别名(可选)
1 | echo 'alias ll="ls -lahFT"' >> /usr/share/skel/dot.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 |
编辑 /usr/share/skel/dot.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 |
配置启用插件:
编辑 /usr/share/skel/dot.zshrc
以下部分加入插件的名字
plugins=([plugins…] zsh-syntax-highlighting)
快速修改:
1 | sed -i '/^plugins=*/c plugins=(git zsh-syntax-highlighting)' /usr/share/skel/dot.zshrc |
增强的实时自动命令补全插件:Incremental completion on zsh
(该插件对性能似乎有一点点影响,请根据需要启用。)
作用如图:
1 | mkdir /etc/oh-my-zsh/custom/plugins/incr |
使用用户配置文件
- 改变新建用户的默认 shell 行为(可选)
FreeBSD 中可以修改 adduser 命令默认 shell
vi /usr/sbin/adduser
将 “DEFAULTSHELL=/bin/sh” 修改为 “DEFAULTSHELL=/usr/local/bin/zsh”
以下是 Linux 中的方法,备忘。
vi /etc/default/useradd
将 SHELL= * (比如 SHELL=/bin/sh) 改成 SHELL=/bin/zsh
修改后,使用 useradd
命令无需 -s /bin/zsh
,用户默认使用 zsh,当然也可以不修改此项,useradd
命令继续追加 -s /bin/zsh
参数。
新用户登录后,将自动复制 .zshrc 和上述 cache 目录到用户主目录下,并自动加载 zsh 配置。
- 针对现有用户
直接复制 /usr/share/skel/dot.zshrc 到 ~/
1 | cp /usr/share/skel/dot.zshrc ~/.zshrc |
- 新建一个用户并指定 zsh 为默认 Shell
FreeBSD 安装 sudo 后,并且配置 wheel 组获得 sudo 权限,新建一个管理员账号并使用 zsh 作为默认 shell:
1 | pw useradd -n sysin -G wheel -s /usr/local/bin/zsh -m && passwd sysin |
以下是 Linux 中的配置,备忘:
在 visudo (/etc/sudoers)默认配置下,创建管理员账号的命令如下:
CentOS:
1 | useradd -m -s /bin/zsh -G wheel user1 #user1 为用户名 |
Ubuntu:
1 | useradd -m -s /bin/zsh -G sudo user1 #user1 为用户名 |
备注:
-m 创建同名 home 目录
-s 指定 shell
-G 修改附加属组
如果文章中使用的内容或图片侵犯了您的版权,请联系作者删除。如果您喜欢这篇文章或者觉得它对您有所帮助,欢迎您发表评论,也欢迎您分享这个网站,或者赞赏一下作者,谢谢!
赞赏一下