因此,bash手册页解释了什么是登录和交互式shell:
登录外壳是一个参数为零的第一个字符为-的外壳程序,或以--login选项开头的外壳程序。
交互式外壳程序是一个不带非选项参数且不带-c选项(其标准输入和错误均连接到终端(由isatty(3)确定))启动的外壳程序,或一个以-i选项启动的外壳程序。如果bash是交互式的,则设置PS1并且$-包括i,从而允许shell脚本或启动文件测试此状态。
我认为这意味着我们可以有4种不同类型的Shell:
- 交互式登录外壳,
- 非交互式登录外壳,
- 交互式非登录外壳,
- 非交互式非登录外壳
但是为什么我们首先要有交互式/非交互式和登录/非登录shell?为什么是品种?如果只有一种外壳,我们会损失什么?
另外,当尝试通过运行来确定我是否在登录外壳程序中时echo $-,它也会输出:
himBH
关于这些标志的解释这里,但是h,H和m没有解释。是否有描述所有这些标志的地方?