Sev*_*Tux 23 command-line bashrc
我有这条线,我.bashrc
想知道这到底是什么意思
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
Run Code Online (Sandbox Code Playgroud)
Rin*_*ind 33
$-
表示“当前标志”。echo $-
返回“他BH”。这些都是默认的。[[ $- != *i* ]] && return
实际上在评论中做了上面所说的:它检查是否设置了交互式标志。[[ 和 ]] 使它成为一个布尔值,所以它以“真”或“假”结束。"false && return" 让它继续 "true && return" 让它执行 return。更详细地解释了默认标志:
h 表示“hash all”:这告诉 bash 记住它通过查询 PATH 找到的命令的位置。
i 用于“交互式”:输入输入并返回输出。
m 代表“监视器”:这可以实现作业控制
B 代表“大括号扩展”。这允许您使用大括号扩展
H 代表“历史展开”。这使您能够通过在其编号前加上感叹号来重新运行历史记录中的命令
顺便一提。我有 ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Run Code Online (Sandbox Code Playgroud)
基本上是一样的,但我认为更容易阅读。
小智 6
基本上它的意思是“如果 shell 标志不包含小写的 i,则在此处停止函数/脚本”。
[[ ]]
Run Code Online (Sandbox Code Playgroud)
表示 bash 中的条件表达式
$-
Run Code Online (Sandbox Code Playgroud)
表示外壳标志。如果 shell 是交互式的,它将包含“i”(即,您可以键入命令,而不是它正在执行脚本)
!=
Run Code Online (Sandbox Code Playgroud)
简单的意思是“不等于”。
*i*
Run Code Online (Sandbox Code Playgroud)
是匹配任何包含“i”的通配符模式
return
Run Code Online (Sandbox Code Playgroud)
没有任何参数只是意味着停止当前函数或脚本的执行。
&&
Run Code Online (Sandbox Code Playgroud)
是逻辑AND运算符。在这种情况下return
,右侧的表达式只有在左侧的表达式为true时才会被评估(执行)。所以在许多编程语言中,它a && b
是一种简写if a then b
——这被称为“短路评估”,当你使用它时,它会让编程老师发疯:D