1789
Help us understand the problem. What are the problem?

posted at

updated at

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

前回の投稿

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とは?

お知らせ

Udemy で webpack の講座を公開したり、Kindle で技術書を出版しています。

Udemy:
webpack 最速入門10,800 円 -> 2,400 円

Kindle(Kindle Unlimited だったら無料):
React Hooks 入門(500 円)

興味を持ってくださった方はご購入いただけると大変嬉しいです。よろしくお願いいたします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1789
Help us understand the problem. What are the problem?