Mitomex Blog

MacのTerminalを使っていると出てくるパスを通すとは

2020-07-02

Terminal を使うときはコマンドを入力して実行します。 例えば ls と入力して実行すると実行したディレクトリにあるファイルとディレクトリの一覧を表示することができます。

この ls は ls というコマンドを実行しているということです。 では ls コマンドというのはどこで定義されているのか?

それは which ls とコマンドを入力して調べることができます。 macOS Catalina で which ls を実行すると /bin/ls と表示されます。

ls というコマンドは /bin/ ディレクトリの中で定義されていることがわかりました。 ちなみにこの /bin/ ディレクトリはバイナリー( binary )の略で実行形式のファイルが保存されているディレクトリになります。

ls コマンドは /bin/ ディレクトリで定義されているので、本来であれば

/bin/ls

とパスを含めてコマンドを入力して実行する必要があります。 ですが毎回パスを入力して実行するは面倒ですし、どこにコマンドがあるのか全て覚えるのは大変です。 ls だけで実行できる方が楽ですよね。

それを可能にするのが PATH になります。 PATH とはコマンドの実行ファイルがどこにあるのか保存しておく環境変数になります。 コマンドだけを入力して実行したときに PATH に保存されているパスを自動で追加して実行してくれるのです。

実行するコマンドが保存されているディレクトリは複数あるため、 PATH に複数のディレクトリを保存しておく必要があります。 複数のディレクトを保存するときはコロン( : )で区切って記述します。

実際に今どのように保存されているか見てみましょう。

現在 Mac で設定されている $PATH を調べるには

printenv PATH

と Terminal で入力します。そうすると

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

などと、設定されている PATH が表示される。

ちなみに printenv とだけ入力すると現在設定されている環境変数をすべて表示されます。

複数ディレクトリが設定されている場合は、左から順番にコマンドを探しにいって最初に見つかったディレクトリにあるコマンドが実行される。

上記例だと

  1. /usr/local/bin
  2. /usr/bin
  3. /bin
  4. /user/sbin
  5. /sbin

と5つのディレクトリが設定されていて、1番左にある /usr/local/bin から探していきます。

上記ディレクトリにないコマンドを実行したいときに PATH に新しくパスを追加する必要があります。この行為が「パスを通す」ということです。

PATH を設定する

環境変数を設定するときは export コマンドを使います。

export PATH = /hoge

これで PATH を新たに設定することができました。 すでにある環境変数 PATH に再度設定しているので、既存のものを上書きすることになります。 このままだと今まで設定されていたパスがなくなってしまうので、今まで使えていたコマンドが使えなくなってしまいます。

今までのパスも含めて PATH を設定しましょう。

export PATH = /hoge:$PATH

上記のように記述することによって、新しいパス /hoge を今までの PATH の前に追加することができます。 環境変数を式の中で使うときは変数の前に $ を付ける必要があります。 $ を付けることによって PATH の中身が展開されます。

これで /hoge にあるコマンドもパスを入力することなく実行できるようになり、この行為が「パスを通す」というものになります。

ちなみに

export -p

で、設定されている環境変数を確認することができます。

すでにある環境変数を削除したい場合は、

unset HOGE

で、削除することができます。

参考ページ:lsコマンド 参考ページ:環境変数 - Wikipedia 参考ページ:exportコマンド