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
の特定のコマンドがどのように評価されているかを正確に知るにはどうすればよいですか?
Bashの内部にあるtype
を使用します。
$ 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
$
Stephane Chazelasによる この回答 のコマンドに関する情報を取得するためのさまざまな方法の適切な内訳があります。 which
に依存するべきではありません。悪意がなくても、問題を引き起こす可能性のあるシェルのハッシュルックアップテーブルを認識していません。