在登录Linux系统时,一般会从以下几个启动文件中读取命令:
/ect/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
系统中并不一定有这种的所有文件,可能只含有部分文件。
其中
1)/etc/profile文件是bash shell的主启动文件。系统上每个用户登录时都会执行的启动文件。
一般 /etc/profile文件中都有如下代码
for i in /etc/profile.d/*.sh ;do
if [ -r "$i" ] ; then
if [ "${-#*i}" != "$-" ] ; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
表明在启动shell时,会自动启动文件夹 /etc/profile下的所有的.sh文件。因此可以在该文件夹下定义需要使用的全局变量或者函数。且不会在退出shell时消失。
2)$HOME目录下的启动文件
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
每个用户都可以编辑这些文件来添加自己的环境变量,这些环境变量会在每次启动bash shell会话时生效。
一般shell会按以下顺序,运行第一个被找到的文件,余下的被忽略:
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
这个列表中并没有$HOME.bashrc文件。英文这个文件可以通过以上几个文件运行。
交互式shell进程
如果是在shell中输入bash时启动的,则这种方式启动的shell叫作交互式shell。此时不会访问/etc/profile文件,只会检查用户HOME下的.bashrc文件。
因此可以在.bashrc文件中定制自己的命名别名或者私有脚本函数。
非交互式shell
即通过shell脚本启动的shell。bash shell提供了BASH_ENV环境变量。当shell启动一个非交互式shell进程时,它会检查这个环境变量来查看要执行的启动文件。如果有指定的文件,shell会执行该文件的命令,通常包括shell脚本变量设置。
声明一下,以上内容整理于《Linux命令行与shell脚本编程大全》的第六章。