ガクセイハッカソン

コマンドとパス(PATH)の関係を理解しよう

2023-12-19 公開

Web開発では、さまざまなコマンドラインツールを使用することがあります。その際にコマンドラインツールをインストールしたにも関わらず、コマンドが見つからないといったトラブルに直面することがよくあります。この記事では、その原因であるパス(PATH)を解説します。

インストールしたコマンドが見つからない場合

コマンドをインストールした後に、そのコマンドを実行しようとすると、次のようなエラーが表示されることがあります。
ここでは、npmのインストール状況を確認するために、バージョン情報を出力するnpm --versionというコマンドを実行したところ、command not found: npmというエラーが表示されました。

ターミナルの画面。npm --versionを入力した後にcommand not foundが出力されている。

このコマンドが見つからないトラブルの基本的な原因は、そのコマンドが含まれるディレクトリがPATHに設定されていないことです。

パス(PATH)とは

パス(PATH)は、オペレーティングシステムがコマンドや実行可能ファイルを探すための環境変数です。環境変数とは、システムやプログラムが使用する設定情報を保持する変数のことです。PATHは、コマンドラインでコマンドを実行する際に、そのコマンドが格納されているディレクトリへのパスをシステムに伝えます。

例えば、PythonやNode.jsなどの開発ツールをインストールすると、その実行可能ファイルは特定のディレクトリに保存されます。これらのツールをコマンドラインから直接呼び出すためには、そのディレクトリがPATHに含まれている必要があります。

この問題を解決するに、まず現在のPATH設定を確認します。PATHは環境変数なので、ターミナルでecho $PATHと入力することで値を確認できます。

次のPATH設定の確認を出力例を示します。

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

コロン (:) で区切られた複数のディレクトリパスを含んでおり、これらのディレクトリはシステムがコマンドや実行可能ファイルを検索する場所を示しています。各ディレクトリは、PATH内の順序通りに検索され、コマンドが見つかった場合、最初に見つかったディレクトリから実行されます。上記の例では、

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin

の順にディレクトリが検索されます。

コマンドのインストール先がこれらパスの参照先でない場合は、新たにパスに追加する必要があります。
例えば、あるツールが/path/to/directoryディレクトリにインストールされている場合、次のコマンドを実行してPATHの設定を追加します。

export PATH=$PATH:/path/to/directory

exportコマンドは、環境変数を設定するために使用され、今回はexportコマンドを使って新しい環境変数を設定し、既存の環境変数を更新しています。

パス設定の永続化

ただ、先ほどのexportコマンドの実行では現在のセッションにのみの適用となり、ターミナルを閉じると設定は消えてしまい、新たに立ち上げたシェルには適用されません。
そこで、ターミナルを立ち上げるたびにexportコマンドを呼び出して自動的にパス設定を読み込ませるためにログインシェルの設定ファイルにパスを追加します。

ログインシェルの確認

パス設定を行う際には、まずどのログインシェルを使用しているかを知ることが重要です。ログインシェルは、ターミナルを開いたときに自動的に起動するコマンドラインインターフェースのことです。一般的にはBashやZshなどがあり、シェルによって設定ファイル(例:.bash_profile, .zshrcなど)が異なります。

現在使用しているシェルを確認するには、ターミナルで次のコマンドを入力します:

echo $SHELL

このコマンドは、現在のログインシェルのパスを表示します。例えば、/bin/bashが表示された場合はBashを使用しており、/bin/zshが表示された場合はZshを使用しています。

設定ファイルの編集

使用しているシェルが分かったら、設定ファイル(Bashなら.bash_profile、Zshなら.zshrc)にパスを追加します。このファイルはユーザーフォルダ直下に置かれます。例えば、/path/to/directoryをPATHに追加する場合、以下のように記述します。

export PATH=$PATH:/path/to/directory

この行を設定ファイルに追加することで、シェルが開始する度に設定が自動的に読み込まれるようになります。編集し保存したら、設定を有効にするsourceコマンドを実行します。

source ~/.bash_profile

これにより、新しいパス設定が現在のシェルセッションに反映されます。

コマンドごとのパス設定

コマンドの配布元のドキュメントやには、PATHの設定方法が記載されていることが多いので必ず確認しましょう。
また、Homebrewを用いてインストールした場合は、インストール後に表示されるメッセージにPATHの設定方法が記載されていることも多いので、英語のメッセージも読み飛ばさないように注意しましょう。

例えば下記のようなメッセージが表示されます。
Homebrewのインストール後のメッセージ

さらに学ぶ

よりPATHやシェルについて知りたい人は、これらの記事も参考にしてみてください。

関連記事