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/osexp/22819.html

(0)
huoxiaoqiang的头像huoxiaoqiang
上一篇 2023年3月7日 20:48
下一篇 2023年5月11日 23:17

相关推荐

  • IEEE 754二进制浮点算术标准

    1.科学记数法 IEEE 754 的开发者最终想到的方法是使用科学记数法的思想。 科学记数法是表示数字的标准方法,您可能熟悉以 10 为基数的科学记数法。 其中一个因数为 a(1≤|a|<10),另一个因数为 10n。例如: 同样的方法也适用于以 2 为基数的科学记数法。例如: 2.IEEE 二进制浮点算术标准 …

    操作系统经验 2021年3月2日
    01.4K0
  • 计算机字节和位的区别

    计算机内存储和处理信息的最小单位是bit(位或比特),它是BInary digiT(二进制数)的缩写,一个位的值可以是0或1,计算机通常不会每次只对一个二进制位进行操作,它们会对一组二进制位进行操作,8个二进制位为一个字节(Byte),现在的微处理器都是面向字节的,所以说计算机存储信息的最小单位是字节也是对的,它的二进…

    操作系统经验 2021年3月1日
    01.6K0
  • Windows和Linux双系统时间误差8小时解决方案

    1.时钟分类 硬件时钟(Hardware Clock):又称为 CMOS时钟(CMOS Clock)、BIOS时间(BIOS Time)、实时时钟(Real Time Clock,RTC),就是我们按键盘上的 F2 按键(不同的电脑可能不同)进入 BIOS 后所看到的时钟,此时钟所存储的时间由主板电池维持,仅能保存:年…

    操作系统经验 2021年2月24日
    03.4K0

发表回复

登录后才能评论