查找 bash 命令的定义或来源?

查找 bash 命令的定义或来源?

有时我想知道我输入的命令的bash实际结果是什么。通常我可以使用 轻松找出可执行文件的位置which

$ which vim
/usr/bin/vim

但是如果我创建了别名怎么办vim

$ alias vim="echo mwahaha"
$ which vim
/usr/bin/vim

嗯,不好。如果我怀疑某件事并想检查是否vim已使用别名,我知道我可以输入

alias vim

...但是如果我有一个alias vim='vim -p',我实际上永远不会想到检查vim别名,因为它仍然可以正常工作。

我如何才能准确地知道正在评估的特定命令bash是什么?

答案1

使用type,它是 bash 内部的。

$ type vim
vim is /usr/bin/vim
$ type -p vim
/usr/bin/vim
$ alias vim="echo mwahaha"
$ type vim
vim is aliased to `echo mwahaha'
$ type -p vim
$

对获取命令信息的不同方法进行了很好的细分这个答案作者:斯蒂芬·查泽拉斯。您不应该依赖which,即使是非恶意的,它也不知道您的 shell 的哈希查找表,这可能会导致问题。

相关内容