有时我想知道我输入的命令的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 的哈希查找表,这可能会导致问题。