开发必备基础知识【Linux环境变量文件合集】
在Linux系统中,环境配置文件用于定制用户的Shell环境,包括定义环境变量、设置命令别名、定义启动脚本等。不同的Shell(如bash、zsh)有着各自对应的配置文件。
.bashrc:每新开一个终端都会执行,配置只影响当前用户的设置
.bashrc:交互式非登录shell配置文件(
新开终端窗口就会执行
)
- 概念:.bashrc是一个针对Bash shell的配置文件,用于交互式非登录shell会话。这意味着每次你打开一个新的终端窗口或标签页时,.bashrc中的配置就会被加载。
- 使用场景:
- 设置shell别名和函数
- 定义环境变量、仅对当前用户的shell会话中有效
- 修改命令提示符
- 设置shell查找路径:$PATH
示例:在.bashrc,我们通常会这样配置:
bash
# 设置命令别名,在终端输入ll效果实际等于ls -la
alias ll='ls -la'
# $HOME/bin目录添加到搜索路径中
export PATH="$HOME/bin:$PATH"
.bash_profile:只在登录时执行的配置,针对bash shell
.bash_profile:登录shell的配置文件(
只在登录时执行一次
)
- 概念:.bash_profile是在登录shell会话开始时加载的配置文件。当你通过图形界面登录、通过SSH远程连接到系统或通过终端登录时,这些文件中的设置就会生效。
- 使用场景:
- 环境变量设置,这些变量在整个登录会话中都有效
- 读取其他的配置文件,如:
.bashrc
示例:我们通常会在.bash_profile
或.profie
文件中,加载.bashrc
。确保我们即使在登录的shell中,.bashrc
的配置也可以被应用。
bash
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
.profile:只在登录时执行的配置,兼容多种shell
与.bash_profile效果一样,不过.bash_profile只对bash(shell)有效,.profile兼容多种shell,只要配置了之后,用其他shell登录也能启作用。
.zshrc:zsh(shell)的配置文件,每新开一个终端都会执行
针对zsh终端类型
- 如果你的默认终端是zsh,当你新开一个窗口时,.bashrc 文件通常不会被自动加载,因为zsh会去查找和执行它自己的配置文件,主要是 .zshrc。.bashrc 是专为bash设计的配置文件,不会在zsh环境下自动应用
bash
# 查看终端类型
echo $SHELL
总结
- .bashrc 和 .zshrc 主要用于非登录Shell,每次启动新终端时都会加载。
- .bash_profile 和 .profile 用于登录Shell,仅在用户登录时执行一次。
- 对于bash用户,.bash_profile 和 .bashrc 常常配合使用,.bash_profile 可以调用 .bashrc 来避免重复配置。
- zshell用户则主要关注 .zshrc。
①交互式非登录 vs 登录shell:
.bashrc
适用于每次新开终端时的交互式非登录shell.bash_profile
和.profile
适用于开始一个新的登录shell会话
②加载频率:
.bashrc
:每次打开新终端窗口或标签时加载.bash_profile
和.profile
仅在登录时加载
③通用性:
.profile
可以被多种兼容sh的shell读取,而.bash_profile
特定于bash
如何选择:
- 对于Bash用户:在
.bash_profile
中设置环境变量,并确保它加载.bashrc
。 - 对于非Bash sh兼容shell用户:使用
.profile
来设置环境变量。 - 通用配置:可以将通用配置放在
.profile
中,特定于Bash的配置放在.bashrc
中。
拓展:
1 ~/.zshrc 与 /etc/zsh/zshrc(当前用户有效与所有用户有效)
①~/.xxxx:实际是当前用户家目录下的配置,因此只对当前用户有效
- ~/.zshrc:实际是当前用户家目录下的.zshrc配置
- ~/.bashrc 或 ~/.zshrc(取决于使用的Shell):这些文件中的环境变量配置仅对当前用户在非登录Shell中有效。例如,如果你使用bash作为Shell,那么在~/.bashrc中设置的环境变量只会影响到当前用户。
- ~/.profile 或 ~/.bash_profile:对于登录Shell,可以在这些文件中设置环境变量,它们也只对当前用户有效。通常,.bash_profile会调用.bashrc来合并配置。
②/etc/xxx:对所有用户都有效,修改的是这台服务器上的配置。类比windows上的用户环境变量与系统环境变量。
- /etc/profile:这是一个系统级别的配置文件,对所有用户都有效,无论他们使用哪种Shell。在这个文件中设置的环境变量会在所有用户的登录Shell中生效。
- /etc/bash.bashrc 或 /etc/zsh/zshrc:对于bash或zsh,系统级的rc文件可以用来设置对所有用户都有效的非登录Shell环境变量。例如,系统管理员可能会在这里设置全局的命令别名或提示符配置。
2 export tag1=value1:临时设置环境变量
有时候我们会执行export xxxx=xxx,
bash
# 环境变量 TAG1 被设置为 VALUE1,该设置是临时的,仅对当前的终端会话有效
# 新开一个终端后无法访问到该环境变量
export tag1=value1
3 source /etc/profile
通常我们配置完环境变量后,会执行 source xxxx
- source /etc/profile 命令的确用于重新加载 /etc/profile 配置文件。这个命令使得在当前Shell会话中立即生效 /etc/profile 中定义的环境变量和配置,而不需要打开新的终端或重新登录
- 由于 /etc/profile 主要是为全局登录Shell准备的配置文件,对于非登录或交互式的Shell,直接执行这个命令可能不会影响到所有的环境配置。对于bash用户,日常的个性化配置通常放在 ~/.bashrc 或 ~/.bash_profile 中,对于这些用户级的配置文件,使用 source ~/.bashrc 或 source ~/.bash_profile 会更加常见
bash
# 重新加载/etc/profile中的配置,而无需重新登录会话
source /etc/profile
参考文章:https://blog.csdn.net/weixin_39973810/article/details/137281970