PATH
実行可能ファイルが環境変数内にある場合、すべての「家族」でそれを行うことができます。その変数は、実行可能ファイルが実行されるときに検索されるパスのコロンで区切られたリストを保持できます。したがって、その変数を正しく設定するだけです。一般的なセットアップには次のパスが含まれます
- ~/bin (現在のユーザーの bin フォルダー)
- . (現在のディレクトリ)
- /置き場
- /usr/ビン
- /usr/ローカル/ビン
問題のコマンドを実際に実行するユーザー アカウントに注意する必要があることに注意してください。これは動的に変更できます。その場合、呼び出しスコープの環境内ではなく、別の PATH 変数である可能性があります。ただし、通常、環境はサブプロセスに完全に引き渡されます。これは、最初に PATH 変数を設定して「エクスポート」し、次に呼び出して、呼び出されたスコープによって継承されることを意味します。
何らかの理由でその環境変数を使用できない場合は、何らかの方法でその動作をエミュレートする必要があります: 一部の実行可能ファイルの場所は、exec 呼び出しまたはシェルによって魔法のように推測できないため、場所がわかっている必要があるか、場所が既知である必要があります。検索しました。したがって、そのような検索アルゴリズムを実装する必要があります。最終的なコマンドを実際に実行するために使用する最小限のシェル(通常は「ラッパー」と呼ばれます)内で実行する場合があります。したがって、ラッパーを呼び出し、実行するコマンドを引数として渡し、コマンドを検索する場所がわかっているラッパーを渡します。しかし、これはまさにPATH 変数が存在する目的です。
別のオプションは、必要な実行可能ファイルを検索するために PATH 変数とシェル アルゴリズムに依存することですが、それは手動で行います。これがwhereis
およびwhich
コマンドの目的です。man ページを参照してください。どちらも PATH 変数を検索し、一致を返すことができます。したがって、最初に目的の実行可能ファイルの絶対場所を照会してから、その絶対パスで呼び出すことができます。