-的值,如果值中包含了字母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-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有