Bash 手册说:
交互式 shell 是在没有非选项参数的情况下启动的,除非指定 -s, 不指定 -c 选项,并且其输入和输出都连接到终端(由 isatty(3) 确定),或者以 -i 选项开始。
我想知道哪个“除非指定 -s”适用于:
- “没有非选项参数”,或者
- “不指定 -c 选项”?
您能否更清楚地重新表述一下引文,以枚举启动交互式 shell 的所有方法? (我只清楚我可以单独开始-i
,但不确定引用描述的其他方式。)
谢谢。
答案1
“除非-s
指定”限定“没有非选项参数”。概要bash
是
bash [options] [command_string | file]
非选项参数是command_string
or file
。如果您指定其中任何一个,则生成的 shell 不是交互式的,除非您指定-s
,而不指定-c
。-s
导致参数被分配给位置参数而不是被解释:
bash -s arg1 arg2
打开交互式 shell,并且
echo $*
输出
arg1 arg2
因此,您可以使用以下任一命令打开交互式 Bash shell:
- 确保标准输入和输出连接到终端并且不指定非选项参数;
- 确保标准输入和输出连接到终端并指定
-s
除 之外的任何参数-c
; - 指定
-i
。
如果您同时指定-c
和-s
,-c
则优先(它会更早处理)。生成的 shell 是非交互式的,并且处理给定的命令。