Bash的调用方式

1.交互式登陆shell或带--login选项的非交互式shell

当Bash作为交互式登录shell,或者作为带 --login 选项的非交互式shell调用时,会依次读取并执行以下配置文件的命令:/etc/profile, ~/.bash_profile~/.bash_login~/.profile

如果使用--noprofile选项,则不读取这些配置文件。

当交互式登录shell退出,或者带--login选项的非交互式登录shell执行exit内置命令时,Bash会读取并执行 ~/.bash_logout 配置文件中的命令。

2.交互式非登陆shell

当Bash作为交互式非登陆shell调用时,Bash会读取并执行 ~/.bashrc 配置文件中的命令。

如果使用--norc选项,则不读取 ~/.bashrc 配置文件。

如果使用 --rcfile file 选项将强制Bash从 file 中读取和执行命令,而不是从 ~/.bashrc 中。

3.非交互式非登陆shell

当Bash作为非交互式非登陆shell调用时,例如,为了运行shell脚本,它会在环境中寻找 BASH_ENV 变量,并使用 BASH_ENV 变量的值作为文件名,读取并执行此文件。

4.使用sh调用

当使用sh作为交互式登录shell,或者作为带 --login 选项的非交互式shell调用时,会依次读取并执行/etc/profile~/.profile配置文件中的命令。如果使用--noprofile选项,则不读取这些配置文件。

当使用sh作为交互式shell调用时,Bash会查找变量ENV,并使用 ENV 变量的值作为文件名,读取并执行此文件。由于作为sh调用的shell不会尝试从任何其他启动文件中读取和执行命令,因此 --rcfile 选项不起作用。

当使用sh作为非交互式非登陆shell调用时,不会尝试读取任何其他启动文件。

当使用sh调用时,Bash在读取启动文件后进入POSIX模式。

5.测试是否交互式shell

//方式一
case "$-" in
*i*)	echo This shell is interactive ;;
*)	echo This shell is not interactive ;;
esac
//方式二
if [ -z "$PS1" ]; then
        echo This shell is not interactive
else
        echo This shell is interactive
fi

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

(0)
上一篇 2023年3月7日 20:48
下一篇 2023年4月28日 14:31

相关推荐

  • Windows和Linux双系统时间误差8小时解决方案

    1.时钟分类 硬件时钟,又名 实时时钟RTC(Real Time Clock) 或 CMOS 时钟,此时钟由主板电池驱动,仅能保存:年、月、日、时、分、秒这些时间数值,无法保存时间标准(UTC 或 localtime)和是否使用夏令时调节。 系统时钟,又名 软件时钟,与硬件时间分开维护,保存了:时间、时区和夏令时设置。…

    操作系统经验 2021年2月24日
    02.8K0
  • Linux echo命令>与>>的区别

    >重定向运算符:如果文件不存在,则会创建新文件。如果文件存在,则会删除原先的所有内容,然后将来自echo的输出添加到文件的开头。 >>重定向运算符:如果文件不存在,则会创建新文件。如果文件存在,则不会删除原先的所有内容,然后来自echo的输出将添加到文件的末尾。

    操作系统经验 2022年11月29日
    02490
  • Linux命令ls -al显示信息的含义以及读写执行权限(rwx)的详解

    1.ls -al 以上图中的.bashrc文件为例: – rw-r–r– 1 ho ho 3771 1月 21 19:55 .bashrc 文件类型为文件 文件所属用户对文件的权限 如果是文件,表示硬链接数,一个文件至少有1个名字,所以硬链接数至少为1。如果是目录,表示子目录数,一个目录至少包含自身(.)和父目录(…

    操作系统经验 2021年7月10日
    01.3K0

发表回复

登录后才能评论