Cor*_*ein 4 shell bash alias which
有时我想知道我输入的命令bash实际上计算了什么。通常我可以很容易地找出可执行文件的位置which。
$ which vim
/usr/bin/vim
Run Code Online (Sandbox Code Playgroud)
但是,如果我已经创建了一个别名vim呢?
$ alias vim="echo mwahaha"
$ which vim
/usr/bin/vim
Run Code Online (Sandbox Code Playgroud)
嗯,不好。如果我怀疑某事并想检查是否vim已使用别名,我知道我可以输入
alias vim
Run Code Online (Sandbox Code Playgroud)
...但如果我有一个alias vim='vim -p',我实际上永远不会考虑检查vim别名,因为它仍然可以正常工作。
我如何才能确切知道bash正在评估的特定命令是什么?
Chr*_*own 10
使用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
$
Run Code Online (Sandbox Code Playgroud)
在Stephane Chazelas 的这个答案中,对获取有关命令的信息的不同方法进行了很好的细分。您不应该依赖which,即使是非恶意的,它也不知道您的 shell 的哈希查找表,这可能会导致问题。