zsh中短横线“-”命令的功能及定义位置咨询
zsh中短横线“-”命令的功能及定义位置咨询
哈哈,这个小细节挺有意思的!我来帮你捋清楚到底是怎么回事~
首先看你在zsh里的操作:
% - % - % echo $? 0
输入-后啥反应都没有,但退出状态码是0,这是因为**-是zsh的内置命令**,它的作用就是啥也不做,直接返回成功状态(退出码0),和另一个内置命令:(冒号)功能类似,但zsh单独把-也实现成了空操作内置命令。
你用which和where查不到它,是因为这两个工具默认只搜索系统里的外部可执行文件,而内置命令是shell本身自带的,得用type命令来查:
% type - - is a shell builtin
这样就能确认它是zsh内置的啦。
再看bash里的情况:
%# - bash: -: command not found
这是因为bash并没有把-作为内置命令实现,所以它会当成外部命令去查找,自然找不到就报错了。
你检查/bin目录也没找到类似[这种特殊可执行文件,这很正常,因为-根本不是外部程序,就是zsh自己内部实现的一个空操作命令而已。
备注:内容来源于stack exchange,提问作者Ken Williams
相关产品推荐
相关产品推荐

