環境変数である$PATHはインストールする時などのエラーの原因になりやすいです。
そのため、$PATHの設定を理解するための記事です。
環境変数はログイン時に毎回、値を代入されています。
まずは、$PATHを初期化しているファイルを特定しましょう。
ログインした時に実行されるファイル(実行順)
1, /etc/profile
2, /etc/profile/profile.d
3, ~/.bash_profile
4, ~/.bash_login
5, ~/.profile
6, ~/.bashrc
7, /etc/bashrc
上記の順番で次々と実行されていく。
/etc/profile/profile.dはディレクトリです。
profile.dの中に入っている.shファイルが全て実行されます。
全ユーザにPATHを追加するときはprofile.dの中のshファイルを追加すると良いでしょう。
特定のユーザにPATHを追加するときは/.bash_profileに追加すると良いでしょう。
ログアウトした時に実行されるファイル
1, ~/.bash_logout
「/etc/profileファイル」の説明
この部分ではrootユーザとそれ以外のユーザで分岐されている。(上がrootユーザ)
pathmunge関数で、$PATHに引数の値を追加している。
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
pathmunge /sbin after
fi
この部分では/etc/profile.d/の中の拡張子が.shのものを全て実行していく
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
この部分ではpathmunge関数の定義をしている
第2引数にafterが付いていれば$PATHの後に追加する。(同じ名前のコマンドだと先頭のパスが優先される)
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
PATHの確認
echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/username/bin
コマンドのPATHの確認
which python
/usr/bin/python
コマンドのPATHがバージョンの違うコマンドだったりとかが、たまにあります。
ホームディレクトリに最初インストールしていて、その後/usr/local/srcなどにインストールしたらPATHがホームディレクトリのままであったりとか。
フォルダの説明
/bin システムで使う基本的なコマンドを格納
/sbin システムで使う管理者用の基本的なコマンドを格納
/usr/bin アプリケーションで使う基本的なコマンドを格納
/usr/sbin アプリケーションで使う管理者用のアプリ汎用コマンドを格納
/usr/local/bin 追加したアプリケーションで使うコマンドを格納
/usr/local/sbin 追加した管理者用のコマンドを格納
/home/USER/bin ユーザが追加したコマンドを格納
/etc/profile/profile.d 全ユーザでも使えるアプリケーションのコマンドのPATH追加するシェルファイルを格納