-
的值,如果值中包含了字母i
,则表示交互式(interactive)。-
的值:
[c.biancheng.net]$ echo $- himBH包含了
i
,为交互式。-
的值:
[c.biancheng.net]$ cat test.sh #!/bin/bash echo $- [c.biancheng.net]$ bash ./test.sh hB不包含
i
,为非交互式。注意,必须在新进程中运行 Shell 脚本。PS1
的值,如果非空,则为交互式,否则为非交互式,因为非交互式会清空该变量。[mozhiyan@localhost]$ echo $PS1 [\u@\h \W]\$非空,为交互式。
[c.biancheng.net]$ cat test.sh #!/bin/bash echo $PS1 [c.biancheng.net]$ bash ./test.sh空值,为非交互式。注意,必须在新进程中运行 Shell 脚本。
shopt login_shell
即可,值为on
表示为登录式,off
为非登录式。[c.biancheng.net]$ shopt login_shell login_shell off
Ctrl+Alt+Fn
组合键切换到虚拟终端,输入用户名和密码登录后,再查看 login_shell 选项:
[c.biancheng.net]$ shopt login_shell login_shell on
[c.biancheng.net]$ cat test.sh #!/bin/bash shopt login_shell [c.biancheng.net]$ bash ./test.sh login_shell off
echo $PS1; shopt login_shell
或者echo $-; shopt login_shell
[c.biancheng.net]$ echo $PS1;shopt login_shell [\u@\h \W]\$ login_shell on
--login
选项(简写为-l
)后变成登录式。
[c.biancheng.net]$ cat test.sh #!/bin/bash echo $-; shopt login_shell [c.biancheng.net]$ bash -l ./test.sh hB login_shell on
()
包围的组命令或者命令替换进入子 Shell 时,子 Shell 会继承父 Shell 的交互和登录属性。
[c.biancheng.net]$ bash [c.biancheng.net]$ (echo $PS1;shopt login_shell) [\u@\h \W]\$ login_shell off [c.biancheng.net]$ bash -l [c.biancheng.net]$ (echo $PS1;shopt login_shell) [\u@\h \W]\$ login_shell on
[c.biancheng.net]$ ssh localhost 'echo $PS1;shopt login_shell' login_shell off
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有