shell登陆与非登陆模式的区别

本篇文章介绍Bash如何执行其启动文件。如果存在任何文件但无法读取,则Bash会报告错误。

交互登陆shell或加上–login

当Bash作为交互式登录shell或作为非交互式shell加上 -login 选项,它首先会从 /etc/profile文件中读取并执行命令,如果该文件存在。读取该文件后,它会依次寻找并执行~/.bash_profile, 〜/.bash_login和 〜/ .profile,并从以上三个存在且可读的文件中第一个命令中读取并执行命令。加上–noprofile 选项启动shell时,可以禁止profile行为。

当交互式登录shell退出或非交互式登录shell执行exit内置命令时,Bash将从文件中读取并执行命令〜/ .bash_logout(如果存在)。

交互非登陆shell

当一个交互shell以非登陆模式开始时,Bash将从〜/ .bashrc读取并执行命令,如果该文件存在。这可以通过使用-norc选项禁止。–rcfile选项将强制Bash从file而不是〜/ .bashrc读取和执行命令。

所以通常 ,〜/ .bash_profile 包含行

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

在任何特定登录的初始化之后(或之前)。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/linux/2829.html

发表评论

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