回答:
$PATH
コマンド名を検索するためのすべてのパス(コロン区切り)を保持する変数があります。これらのフォルダーは、最初のフォルダーから最後のフォルダーまでチェックされ、見つかったときにコマンドが実行されます(したがって、異なる$PATH
ディレクトリにその名前のファイルが複数ある場合、最初のフォルダーが実行されます)。
表示するには$PATH
:
echo $PATH
どこにfirefox
あるかを確認するには:
which firefox
bash
他のシェルやコマンドプロセッサはPATH
ディレクトリを検索し、入力したコマンド名に一致する実行可能ファイルを探します。
必需品は他の回答ですでに与えられています。技術的には、シェルはコマンドの場所をハッシュテーブルに保存します。ではbash
、あなたのコマンドによって、このテーブルを表示することができますhash
:
$ hash
hits command
2 /usr/bin/ldd
1 /usr/bin/man
1 /usr/bin/less
このハッシュテーブルを変更することもできます。詳細については、bash
manページを引用しています。
hash [-lr] [-p filename] [-dt] [name]
各名前について、コマンドの完全なファイル名は、$ PATHのディレクトリを検索して決定され、記憶されます。-pオプションが指定されている場合、パス検索は実行されず、コマンドの完全なファイル名としてfilenameが使用されます。-rオプションを使用すると、シェルは記憶されているすべての場所を忘れます。-dオプションにより、シェルは各名前の記憶された場所を忘れます。-tオプションを指定すると、各名前が対応するフルパス名が出力されます。複数の名前引数が-tで指定された場合、名前はハッシュされたフルパス名の前に出力されます。-lオプションを使用すると、入力として再利用できる形式で出力が表示されます。引数が指定されていない場合、または-lのみが指定されている場合、記憶されたコマンドに関する情報が出力されます。名前が見つからないか、無効なオプションが指定されない限り、戻りステータスはtrueです。ここで、このセッションで既に実行したコマンドを確認できます。
他のシェルは異なる動作をする可能性がありますzsh
(これはから適応されたと思いますcsh
)シェルは、起動時またはを呼び出すことですべてのコマンドを収集しますrehash
。次に、使用可能なすべてのコマンドの完全なリストを取得し、hash
たとえばのすべてのバリアントを検索できますdiff
。
zsh$ hash | grep diff
bzdiff=/usr/bin/bzdiff
cdiff=/usr/bin/cdiff
colordiff=/usr/bin/colordiff
diff=/usr/bin/diff
diff3=/usr/bin/diff3
ptardiff=/usr/bin/ptardiff
sdiff=/usr/bin/sdiff
tkdiff=/usr/bin/tkdiff
vimdiff=/usr/bin/vimdiff
xzdiff=/usr/bin/xzdiff
zdiff=/usr/bin/zdiff
繰り返しますが、man zshbuiltins
詳細については相談してください。
$PATH
)にある場合はwhich -a firefox
、それらを使用してすべてを一覧表示できます。実行時に、シェルは最初のものを選択します。