如果每次用户启动新的bash shell时都能运行相关的脚本(哪怕是特定用户启动的bash shell),那将会非常方便,因为有时候你希望为shell会话设置某些shell特性,或者希望已经设置了某个文件。
这时可以回想一下当用户登录bash shell时要运行的启动文件。另外别忘了,不是所有的发行版都包含这些启动文件。基本上,以下所列文件中的第一个文件会被运行,其余的则会被忽略。
- $HOME/.bash_profile
- $HOME/.bash_login
- $HOME/.profile
因此,应该将需要在登录时运行的脚本放在上述第一个文件中。
每次启动新的shell,bash shell都会运行.bashrc文件(一般而言,用户登录时会运行从$HOME/.bash_profile、$HOME/.bash_login或$HOME/.profile中找到第一个文件,而$HOME/.bashrc则是由非登录shell运行的文件)。对此进行验证,可以使用这种方法:在主目录下的.bashrc文件中加上一条简单的echo语句,然后启动一个新shell。
$ cat $HOME/.bashrc
# .bashrc# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fi# User specific environment
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
export PATH# Uncomment the following line if you don't like systemctl's autopaging feature:# export SYSTEMD_PAGER=# User specific aliases and functions
echo "I'm in a new shell!"
$
$ bash
I'm in a new shell!
$
$ exit
exit
$
.bashrc文件通常也借由某个bash启动文件来启动,因为.bashrc文件会运行两次:一次是当用户登录bash shell时,另一次是当用户启动bash shell时。如果需要某个脚本在两个时刻都运行,可以将其放入该文件中。