Linux /etc/profile中的Bash语法
我刚刚在我的Linux /etc/profile中的Bash语法,linux,bash,unix,sh,profile,Linux,Bash,Unix,Sh,Profile,我刚刚在我的/etc/profile中注意到这一行,我想知道这是什么意思,什么时候是真的 if [ "${-#*i}" != "$-" ]; then i迭代几个*.sh文件 很抱歉,如果这是一个愚蠢的问题,但正如你所能想象的,在谷歌中寻找大部分符号确实不是一个选项 谢谢 从手册页的选项部分: -i If the -i option is present, the shell is interactive. 从手册页的特殊参数部分: -i If the -i op
/etc/profile
中注意到这一行,我想知道这是什么意思,什么时候是真的
if [ "${-#*i}" != "$-" ]; then
i
迭代几个*.sh
文件
很抱歉,如果这是一个愚蠢的问题,但正如你所能想象的,在谷歌中寻找大部分符号确实不是一个选项
谢谢 从手册页的
选项部分:
-i If the -i option is present, the shell is interactive.
从手册页的
特殊参数部分:
-i If the -i option is present, the shell is interactive.
从手册页的参数展开部分
中:
-i If the -i option is present, the shell is interactive.
这个词被展开以产生一个模式,就像在路径名中一样
膨胀如果模式与值的开头匹配
参数,则展开的结果是展开的
具有最短匹配模式的参数值(“#”
大小写)或删除最长的匹配模式(“大小写”)。
如果参数为@或*,则应用图案移除操作
依次添加到每个位置参数,展开式为
结果列表。如果参数是下标的数组变量
对于@或*,模式移除操作应用于每个
依次是数组的成员,扩展是结果
名单
因此,“${-#*i}”
表示展开$-
变量,并从字符串开头移除字母i
。然后比较该扩展=
反对扩展$-
(仅未修改同一变量)
当它们不相同时,这意味着第一次扩展删除了一些内容,这意味着字母i
出现在$-
的值中,这意味着(因为-i
不是set
的参数),-i
参数被传递给shell,shell是一个交互式shell