PATHの優先順位を理解する
チームリーダーによると、PATH変数内のディレクトリの順序によって、デフォルトで使用されるコマンドのバージョンが決まるとのことです。PATHを確認してみましょう。
echo $PATH
コロンで区切られたディレクトリのリストが表示されます。例:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
順序が重要です。先にリストされているディレクトリほど優先順位が高くなります。つまり、異なるディレクトリに同じ名前の実行ファイルが2つある場合、PATH内で先に出現するディレクトリにある方が使用されます。
この実験環境では、すでに~/custom_binにカスタムのlsコマンドが作成されています。このディレクトリをPATHの先頭に追加して、システムディレクトリよりも先にチェックされるようにしましょう。
export PATH=$HOME/custom_bin:$PATH
次に、デフォルトでどのlsが実行されるかを確認します。
which ls
以下のような出力が表示されるはずです。
/home/labex/custom_bin/ls
PATH内のすべての一致するlsコマンドを確認するには、以下を実行します。
which -a ls
カスタムコマンドが最初に表示され、その後にシステム版が続くはずです。
/home/labex/custom_bin/ls
/usr/bin/ls
/bin/ls
これはPATHの優先順位を明確に示しています。which lsは最初に見つかった実行ファイルを返し、which -a lsは検索結果の全リストを表示します。