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
とだけ入力すると現在設定されている環境変数をすべて表示されます。
複数ディレクトリが設定されている場合は、左から順番にコマンドを探しにいって最初に見つかったディレクトリにあるコマンドが実行される。
上記例だと
- /usr/local/bin
- /usr/bin
- /bin
- /user/sbin
- /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
で、削除することができます。