我的电脑里有这行代码.bashrc
,我想知道这到底是什么意思
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
答案1
$-
意思是‘当前标志’。echo $-
返回“himBH”。这些都是默认值。- 所以 ...
[[ $- != *i* ]] && return
实际上做了上面注释中所说的事情:它检查是否设置了交互标志。 [[ 和 ]] 使其成为布尔值,因此最终结果为“true”或“false”。 “false && return” 使其继续执行 “true && return” 使其执行返回。
默认标志的详细解释:
h 代表“hash all”:这告诉 bash 记住通过查询 PATH 找到的命令的位置。
i 代表“交互式”:输入并返回输出。
m 代表“监控”:这可以实现作业控制
B 代表“括号扩展”。这允许你使用括号扩展
H 代表“历史扩展”。此功能可让您通过在命令编号前加上感叹号来重新运行历史记录中的命令
顺便说一下。我有……
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
我认为,基本上作用相同,但更容易阅读。
答案2
基本上它的意思是“如果 shell 标志不包含小写 i,则在此停止该函数/脚本”。
[[ ]]
表示 bash 中的条件表达式
$-
表示 shell 标志。如果 shell 是交互式的(即,您可以键入命令,而不是执行脚本),它将包含“i”
!=
只是表示“不等于”。
*i*
是匹配任何包含“i”的通配符模式
return
没有任何参数只是意味着停止当前函数或脚本的执行。
&&
是合乎逻辑的和运算符。在本例中,右侧的表达式return
只有在左侧的表达式满足以下条件时才会被求值(执行)。真的。因此,在许多编程语言中,是“短路求值”的a && b
简写,当你使用它时,编程老师会抓狂的:Dif a then b
答案3
我认为它就像它说的那样:如果 bash 没有在交互式 shell 中打开,那么就不要做任何事情。
我不知道整个功能,但如果你在 TTY 中打开 bash,则该行下面可能设置了命令和标志。