.bash_*files的执行顺序

下列文件的执行顺序是什么?

o   /etc/profile
o   ~/.bash_profile
o   ~/.bashrc
o   ~/.bash_login
o   ~/.profile
o   ~/.bash_logout

交互式登录shell的执行顺序

下面的伪代码将说明这些文件的执行顺序

execute /etc/profile
IF ~/.bash_profile exists THEN
    execute ~/.bash_profile
ELSE
    IF ~/.bash_login exist THEN
        execute ~/.bash_login
    ELSE
        IF ~/.profile exist THEN
            execute ~/.profile
        END IF
    END IF
END IF

当你从交互式shell中注销,以下是执行顺序:

IF ~/.bash_logout exists THEN
    execute ~/.bash_logout
END IF

请注意/etc/bashrc是通过~/.bashrc执行,如下所示:

# cat ~/.bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
Fi

非登录交互式shell的执行顺序

当你启动一个非登录交互式shell,下面是执行顺序

IF ~/.bashrc exists THEN
    execute ~/.bashrc
END IF

[注意:当一个非交互式shell启动,它会寻找环境变量ENV,并执行环境变量ENV里的文件名变量。]

发表评论

电子邮件地址不会被公开。 必填项已用*标注