我想使用which
命令来查看实际调用了哪个可执行文件,但是防御noglob
性别名一直阻碍着我。
是否有一个快捷方式可以用来查找命令别名时调用哪个可执行文件?
我正在使用zsh
shell。
答案1
您可以使用which -a COMMAND
(或where COMMAND
或)来查找命令路径中whence -ca COMMAND
所有出现的。COMMAND
例如:
% alias ls='noglob ls'
% ls () /bin/ls
% which ls
ls: aliased to noglob ls
% which -a ls
ls: aliased to noglob ls
ls () {
/bin/ls
}
/bin/ls
由于在执行任何操作之前别名会在命令行中被替换,因此列表中的第二个命令就是您要查找的命令(当然假设第一行以某种方式别名为同一个名字)
答案2
使用which -p
例如:
✗ which ls
ls: aliased to ls --color=tty
✗ which -p ls
/bin/ls
从https://linux.die.net/man/1/zshbuiltins:
(从何而来)-p
对名称进行路径搜索,即使它是别名,保留字,shell 函数或内置函数。