如果您在命令行上花费大量时间,您很可能想要自定义您的 shell 环境。这可能意味着创建别名,将新目录添加到 $PATH,或更改 shell 提示符的外观。
您可能遇到过一些教程,其中他们说将您的配置放在.bashrc
, .bash_profile
或由 bash shell 读取并执行的另一个配置文件。
在这篇文章中,我们将讨论 Bash 启动文件以及它们之间的区别.bashrc
and .bash_profile
files.
交互式登录和非登录 Shell#
当被调用时,Bash 从一组启动文件中读取并执行命令。读取哪些文件取决于 shell 是作为交互式登录 shell 还是非登录 shell 调用。
shell 可以是交互式的,也可以是非交互式的。
简单来说,交互式 shell 是读取和写入用户终端的 shell,而非交互式 shell 是不与终端关联的 shell,例如执行脚本时的 shell。
交互式 shell 可以是登录 shell,也可以是非登录 shell。
当用户通过 ssh 或本地远程登录到终端时,或者使用以下命令启动 Bash 时,将调用登录 shell--login
选项。从登录 shell 调用交互式非登录 shell,例如在键入时bash
在 shell 提示符下或打开新的 Gnome 终端选项卡时。
Bash 启动文件#
当作为交互式登录 shell 调用时,Bash 会查找/etc/profile
文件,并且如果文件已存在,它运行文件中列出的命令。然后 Bash 搜索~/.bash_profile
, ~/.bash_login
, and ~/.profile
按列出的顺序查找文件,并从找到的第一个可读文件中执行命令。
当 Bash 作为交互式非登录 shell 被调用时,它从以下位置读取并执行命令~/.bashrc
,如果该文件存在并且可读。
.bashrc 和 .bash_profile 之间的区别#
.bash_profile
当 Bash 作为交互式登录 shell 被调用时被读取并执行,而.bashrc
针对交互式非登录 shell 执行。
Use .bash_profile
运行只应运行一次的命令,例如自定义$PATH
环境变量
.
将每次启动新 shell 时运行的命令放入.bashrc
文件。这包括您的别名和函数, 自定义提示,历史定制, 等等。
通常,~/.bash_profile
包含如下所示的行.bashrc
文件。这意味着每次登录终端时,都会读取并执行这两个文件。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
大多数 Linux 发行版都使用~/.profile
代替~/.bash_profile
. The ~/.profile
文件被所有 shell 读取,同时~/.bash_profile
仅由 Bash 提供。
如果您的系统上不存在任何启动文件,您可以create
it.
结论#
.bash_profile
and .bashrc
是包含调用 Bash 时运行的 shell 命令的文件。.bash_profile
在交互式登录 shell 上读取并执行,而.bashrc
在非登录 shell 上。
查看 Bash 手册以获取更多信息Bash 启动文件
.
如果您有任何问题或反馈,请随时发表评论。