PATHを通すために環境変数の設定を理解する (Mac OS X)

  • 387
    いいね
  • 0
    コメント

前回の投稿

PATHを通すには特定のファイルにexport PATH=$PATH:追加したいコマンド検索パスのような記述を追加するみたいですが、記述内容が理解できず「exportって何?何故$PATHを記述しているの?」状態だったのでそれに関しての備忘録です。

PATHの通し方

~/.bashrc~/.bash_profileに以下のコマンドを記述する。(記述はどちらかで良い。)

.bashrc
export PATH=$PATH:追加したいコマンド検索パス
.bash_profile
export PATH=$PATH:追加したいコマンド検索パス

記述後は編集したファイルに対してsourceコマンドを実行しないとPATHが通らない。

コマンド
source ~/.bashrc
source ~/.bash_profile

exportコマンドとは?

以下のことができるコマンド

  • 環境変数を表示する。
  • 環境変数を設定する。

環境変数を表示する

設定されている環境変数を表示する。

コマンド
export -p

#出力結果(一部のみ記載)
declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
declare -x LANG="ja_JP.UTF-8"
declare -x SHELL="/bin/bash"

環境変数を設定する

たとえば$ULBという環境変数を設定したい場合、以下のように入力をする。

コマンド
export ULB=/usr/local/bin

結果は表示されないが、環境変数$ULBが設定されたのでecho $ULBで確認できる。

コマンド
echo $ULB
/usr/local/bin #出力結果

設定した環境変数を利用してみる。

コマンド
#どちらのコマンドでも同じ結果が出力される。
ls /usr/local/bin
ls $ULB

既に存在する環境変数を設定するとどうなるのか?

上書きされる。(再設定される。)

コマンド
echo $ULB
/usr/local/bin #出力結果

export ULB=/u/l/b

echo $ULB
/u/l/b #出力結果

環境変数を削除したい

unsetコマンドで環境変数を削除できる。先ほど設定した$ULBを削除したい場合、以下のように入力する。

コマンド
unset ULB #[$]は入力しなくて良い。

echo $ULB
#何も出力されない。

exportを理解した上で再度PATHを通す記述を確認してみる

環境変数$PATHを上書き(再設定)している記述だった。

export PATH=$PATH:追加したいコマンド検索パス

$PATHを記述しなくても以下のように記述すれば同じ。

#現在$PATHに設定されているコマンド検索パスが以下の場合
#/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin
#どちらの記述でも$PATHに設定されるコマンド検索パスは同じ。
export PATH=$PATH:追加したいコマンド検索パス
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:追加したいコマンド検索パス

追加するコマンド検索パスの優先順位を高くしたい

コマンド検索パスには優先度があり、echo $PATHで出力された左から優先されるため、
追加するコマンド検索パスの優先度を高くしたい場合、以下のように記述する。

export PATH=追加したいコマンド検索パス:$PATH

そもそも.bash_profile、.bashrcとは?