用户级别的环境变量
- .bash_profile
- .bash_login
- .bashrc
坑的原理:
1.当bash shell作为登录shell启动时(比如用户登录系统时),首先会查找并执行/.bash_profile文件。如果这个文件不存在,那么它会尝试查找并执行/.bash_login。如果/.bash_login也不存在,那么它会尝试查找并执行/.profile。
2.当bash shell作为交互式非登录shell启动时(比如在已登录的系统中打开一个新的终端窗口时),它会查找并执行~/.bashrc。
坑的原因,新建了一个bash_profile,导致其他文件里边的环境变量失效
解决
因此,如果你打算在所有登录和非登录的bash shell中都使用一些设置(比如环境变量或命令别名),那么最好将这些设置添加到/.bashrc中,并在/.bash_profile(或者/.bash_login或/.profile,取决于你的系统配置)中添加以下代码,以确保登录shell也会加载~/.bashrc
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
此外还有一个在mac中常用的shell的环境变量文件
~/.zshrc
解决办法
加入以上代码,或者把东西放进一个文件内,要不然就只能加载优先级最高的一个
补充
- 系统级环境变量
在Linux中,系统级别的环境变量通常在以下文件或目录中设置:
/etc/environment: 这个文件是用来存储系统级别环境变量的一个好地方。这个文件只包含简单的“变量名=值”对,不能包含shell脚本。
/etc/profile和/etc/profile.d/*: 这些文件用于全局shell环境变量。/etc/profile文件在用户登录时执行一次。/etc/profile.d目录中的所有脚本都会被/etc/profile执行。
/etc/bash.bashrc或/etc/bashrc: 这些文件在每次打开新的bash shell时都会被执行,适合那些需要在每个bash shell中都可用的环境变量。