Linux中的启动文件及环境文件

在登录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脚本编程大全》的第六章。

你可能感兴趣的:(linux)