本文发布于 791 天前,最后更新于 771 天前,其中的信息可能已经有所发展或是发生改变。
苹果在 macOS 10.15 开始使用 Zsh 作为默认的 Shell
先前一直没有接触 Zsh 的我打算认真研究一下 Zsh
小Tips
请先不要在不熟悉的情况下立刻使用 oh-my-zsh 项目虽然这个项目确实很好使
配置文件以及迁移个人配置目录
配置文件
Zsh 的配置文件是有亿点点多,不过可以借助表格来理解一下。
所有用户 | 当前用户 | 登录 Shell | 交互式 Shell | 脚本 | 终端应用程序 |
---|
/etc/zshenv | .zshenv | √ | √ | √ | √ |
/etc/zprofile | .zprofile | √ | X | X | √ |
/etc/zshrc | .zshrc | X | √ | X | √ |
/etc/zlogin | .zlogin | √ | X | X | √ |
/etc/zlogout | .zlogout | √ | X | X | √ |
当Zsh 读取配置文件时,先读取所有用户配置,再读取当前用户配置( zlogout 例外 ),然后读取下一项配置内容,配置内容已在表格上按先后顺序由上到下依次列出。
即 Zsh 将首先读取 /etc/zshenv
,然后读取当前用户的.zshenv
。(当然,前提是它们存在),zshenv 文件顾名思义,一般用于配置环境变量。
然后当登陆用户时(non-login),zprofile 将被加载,可以用来在登陆时执行一些命令。
当运行交互 Shell (interactive shell)运行时,zshrc 将被加载
登陆用户完毕后(login),将读取并加载 zlogin
login shell 是用户登陆时,输入用户名和密码后启动的 shell non-login shell 是登录以后所打开的 shell interactive shell 在终端上执行,shell 等待你的输入,并且立即执行你提交的命令,跟用户存在交互 non-interactive shell 以 shell script(非交互)方式执行。
最后,当登录 Shell 退出时,调用 zlogout 文件 , 首先读取当前用户的 .zlogout ,然后读取 /etc/zlogout 。
迁移个人配置文件目录
自 Bash 时便不喜欢 Sehll 的配置文件默认保存在 $HOME 位置,不过由于当时懒得折腾,这下趁着开始使用新的 Shell 的机会,开始研究了一下。
Zsh 通过读取环境变量 $ZDOTDIR 决定用户的配置文件保存在哪,如刚刚说讲,zshenv 文件一般用于配置环境变量,因此,只要更改 /etc/zshenv
文件即可改变用户配置文件目录
在 /etc/zshenv
中添加 ZDOTDIR="你想存放的位置"
即可
以我个人为例 ZDOTDIR=$HOME/Documents/.zsh