zsh的环境变量的加载.zprofile .zlogin .zshrc .zshenv
上一级页面:配置oh-my-zsh
全局配置文件
zsh的默认全局配置路径,在不同发行版上有所区别,这里以使用最广的配置为例。(部分发行版需要自行百度配置路径)
sudo vim /etc/zsh/zshenv
具体来说,这个路径可以通过命令查看zsh的自带手册
man zsh
如图所示位置
设置ZDOTDIR
可以查看WIKI:Zsh (简体中文) - ArchWiki (archlinux.org)
sudo vim /etc/zsh/zshenv
设置$ZDOTDIR
,
# 我在这个文件夹($HOME/.zsh/wsl2)中储存 .zshenv .zshrc .zprofile等
ZDOTDIR=/opt/zsh-conf/wsl2/ubuntu
激活配置文件
zsh
从云端下载自己的配置文件
从云端下载自己的配置文件
cd ~/src
git clone git@github.com:YJ2CS/oh-my-conf.git zsh-conf
sudo mv zsh-conf /opt
查看ZDOTDIR
la $ZDOTDIR
zsh的配置文件详解
zsh的全局配置文件在$ZDOTDIR
,可以查看WIKI:Zsh (简体中文) - ArchWiki (archlinux.org)
ll $ZDOTDIR
有必要把zsh的环境变量配置说一下,
当 Zsh 启动时,它会按照顺序依次读取下面的配置文件:
$ZDOTDIR/zshenv
该文件应该包含用来设置PATH 环境变量以及其他一些环境变量的命令;不应该包含那些可以产生输出结果或者假设终端已经附着到 tty 上的命令。
对于$PATH
, $EDITOR
等变量,应当按照规范,写在$ZDOTDIR/.zshenv
- 举例:对于wsl2 的x client端配置,因为是所有用户都要应用的,并且需要在
nologin
状态下起效的(不只应用在shell),应当按照规范,写在$ZDOTDIR/zshenv
~/.zshenv
该文件和 $ZDOTDIR/zshenv
相似,但是它是针对每个用户而言的。一般来说是用来设置一些有用的环境变量。
$ZDOTDIR/zprofile
这是一个全局的配置文件,在用户登录的时候加载。一般是用来在登录的时候执行一些命令。
请注意,在 Arch Linux 里该文件默认包含一行命令,用来加载 /etc/profile
文件
sudo vim $ZDOTDIR/.zprofile
emulate sh -c 'source /etc/profile'
- 详见 #全局配置文件。
这只是为了兼容已有的旧的配置文件,新的对应配置,应当写在$ZDOTDIR/zprofile
/etc/profile
在登录时,该文件应该被所有和伯克利(Bourne)终端相兼容的终端加载:它在登录的的时候会加载应用相关的配置(/etc/profile.d/*.sh
)。
注意在 Arch Linux 里,Zsh 会默认加载该文件。而在其他发行版中,则需要手动更改$ZDOTDIR/zprofile
,添加一句emulate sh -c 'source /etc/profile'
~/.zprofile
该文件一般用来在登录的时候自动执行一些用户脚本。
$ZDOTDIR/zshrc
当 Zsh 被作为交互式终端的时候,会加载这样一个全局配置文件。
当前用户要应用的,并且运行在交互式终端(shell)下,应当写在$ZDOTDIR/.zshrc
~/.zshrc
当 Zsh 被作为交互式终端的时候,会加载这样一个用户配置文件。
只对当前用户应用的,并且运行在交互式终端(shell)下,应当写在~/.zshrc
$ZDOTDIR/zlogin
在登录完毕后加载的一个全局配置文件。
$ZDOTDIR/.zlogin
是在当前用户登录完毕后加载的一个全局配置文件。
- 注意,登录并不一定要运行在交互式终端(shell)下,很多场景下会直接启动GUI界面,而不加载shell
~/.zlogin
和 $ZDOTDIR/zlogin
相似,但是它是针对每个用户而言的。
$ZDOTDIR/zlogout
在注销的时候被加载的一个全局配置文件。
~/.zlogout
和 $ZDOTDIR/zlogout
相似,但是它是针对每个用户而言的.
- 在 Arch 源中的 zsh 所使用的文件路径和 Zsh 的 man 手册中默认的不同(详见 #全局配置文件)
/etc/profile
不是 Zsh 常规启动配置文件的一部分,但是 Arch 源中的 zsh 会在$ZDOTDIR/zprofile
里面加载它。用户应该注意/etc/profile
里面设置的$PATH
环境变量会覆盖掉~/.zshenv
里面配置的任何$PATH
,为防止这一点,请不要在/etc/profile
中设置用户的环境变量。
参考
What should/shouldn't go in .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?
zsh的环境变量的加载.zprofile .zlogin .zshrc .zshenv – Vincent Blog (xsudo.com)