LoginSignup
151
176

More than 3 years have passed since last update.

PATHを通すの意味と通し方 .bash_profile

Last updated at Posted at 2018-12-17

macにbrewなどで新しいアプリ(rbenv等)をインストールする時、あまり良く考えずにそのアプリのコマンドPATHを通していましたが、「そもそもコマンドのPATHを通すってどういうことか」を調べてみました。

PATHとは?

以下、開発環境はMacです。
PATHとは環境変数のひとつ。
環境変数とは、マシンの中のメモ帳みたいなもの。
コンソール(ターミナル)のどこからでも参照することができるメモ帳。

その中でもPATH(環境変数)は実行ファイル(アプリケーション)の格納場所をメモしたもの。

コマンドとは?

実行ファイル(アプリケーション)のこと。

/bin/ls
ls
上記は同じ効果を持つ。

例えばlsというコマンドの実行ファイルは/binディレクトリに格納されており、/bin/lsと入力するとアプリケーションが実行される。/binをPATHに設定(通して)いれば、上記のようにフルパス/bin/lsを指定せずともlsだけ入力しすれば/bin/lsと同じ実行がされる。
このように、コマンド(lsなどの実行ファイル)入力時にシェル(bashやzsh等)が実際に実行ファイルを探しに行く際に参照するところをPATHと言う。

どんなPATHが設定されているか確認する方法

PATHは環境変数$PATHに設定されており、echo $PATHで確認できる。

$echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin... #実行結果

縦に並べると、、

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/sbin
...

上記だと、usr/local/binusr/bin以下にあるアプリは省略コマンド(ls等)でコマンドを実行できる(PATHが通っている状態)

実行ファイル(アプリケーション)の場所の確認方法

whichで、指定したコマンドの実行ファイルがどこに格納されているのか確認できる。
たとえばlsはどこのパスにあるかというと、

$which ls
/bin/ls #実行結果

/bin/以下にあることがわかる。
そして/bin/はPATHに登録してあるので、bin/lslsで動く。

目的とする実行ファイルが複数の違う場所にある場合

先に見つかった方を実行する。
PATHには優先度があり、echo $PATHで出力された左が優先される。
そのため、/usr/local/bin/ls/usr/bin/lsのような同じ名前の実行ファイルが
存在する場合、/usr/local/bin/lsが実行される。

PATHの通し方

PATHを通すにはホームディレクトリ直下にある設定ファイル.bash_profileに通したいPATHを記入する必要がある。

.bash_profileを作成してvim等で編集する。

vi ~/.bash_profile

もしくは、下記のコマンドを実行する

解説)$echo 'export PATH=/通したい/パス:$PATH' >> .bash_profile
例)$echo 'export PATH=/usr/hoge:$PATH' >> .bash_profile

環境変数PATHを書き換えた後、有効にする

shellを更新する。

$source ~/.bash_profile

※うまくいかない場合があるのでその時はターミナルを再起動してください

PATHが通っているか確認。

$echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin.../user/hoge#追加されていればOK

以上です。

151
176
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
151
176