実行するプログラムの名前だけが与えられた場合、Unixはプログラムの絶対パスをどのように知ることができますか?

実行するプログラムの名前だけが与えられた場合、Unixはプログラムの絶対パスをどのように知ることができますか?

実行するプログラムを作成するときに、プログラムが作成された作業ディレクトリに関連しているとします。

ベストアンサー1

完全パスまたは相対パスなしでプログラムを呼び出し、プログラムが関数または組み込みではないと仮定すると、そのプログラムを見つけるにはPATH環境変数に存在する必要があります。

3.7.2 命令の検索と実行

Bashは、複数のPATH検索を回避するために実行可能ファイルのフルパス名を記憶するためにハッシュテーブルを使用します(Bourne Shell組み込み関数のハッシュ説明を参照)。 $ PATHのディレクトリの完全検索は、ハッシュテーブルでコマンドが見つからない場合にのみ実行されます。検索に失敗すると、シェルはcommand_not_found_handleという定義されたシェル関数を検索します。関数が存在する場合は、元のコマンドと元のコマンドの引数を引数として別々の実行環境で呼び出され、関数の終了状態はサブシェルの終了状態になります。この関数が定義されていない場合、シェルはエラーメッセージを出力し、終了ステータス127を返します。

おすすめ記事