web-dev-qa-db-ja.com

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の特定のコマンドがどのように評価されているかを正確に知るにはどうすればよいですか?

3
Cory Klein

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に依存するべきではありません。悪意がなくても、問題を引き起こす可能性のあるシェルのハッシュルックアップテーブルを認識していません。

9
Chris Down