Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我一直在查看各种 Linux 发行版附带的一些 .bashrc 和 .profile 脚本,并且看到它们有时会检查$-.
$-
这是Ubuntu中的一个
case $- in *i*) ;; *) return;; esac
在这种情况下,它会检查是否存在“i”标志以查看当前 shell 是否是交互式 shell。
我目前的会议给了我这个:
# echo $- himBH
其他标志/选项是什么意思?某处有完整的清单吗?
从man bash:
- 扩展为调用时指定的当前选项标志,由set 内置命令,或由 shell 本身设置的那些(例如 -i 选项)。
-
扩展为调用时指定的当前选项标志,由set 内置命令,或由 shell 本身设置的那些(例如 -i 选项)。
因此,这些是控制 shell 行为的当前选项。尤其:
h
$PATH
i
m
B
H
!-1
它们意味着各种各样的东西。每个字母对应于为 bash 设置的一个选项。例如,“i”表示 shell 是交互式的(因此您提供的代码示例是测试它是否是交互式 shell)。
完整列表可在 bash 手册页中找到。寻找“set”——这是第一行:
set [+abefhkmnptuvxBCEHPT] [+o option-name] [arg ...]