Posted at

[Linux]環境変数の読み込み順番

More than 3 years have passed since last update.

Linuxの環境変数の読み込み順番について調査してみました。

Linux上コマンドが使える理由は何だ?

それは、様々なディレクトリにコマンドが保存されているからです。


Linuxコマンドが使える理由

/bin 基本コマンド

/sbin 管理者用コマンド

/usr/bin アプリケーションで利用する基本コマンド

/usr/sbin アプリケーションで利用する管理者用コマンド

/usr/local/bin 追加したソフトやパッケージ用のコマンド

確認してみました。

/bin

/usr/bin

/usr/local/bin

/sbin

/usr/sbin 

はroot権限がないので、、確認できなかったです。

すみません。。

でも、とりあえずコマンドがディレクトリに保存されているのは

確認できました。

それなら、/bin/???? , /usr/bin/??? , /usr/local/bin/???

のようにパスを指定する必要は?

ないですね。

普段パスを指定しなくコマンドが使えた理由は

ログインの時にコマンドへのパスが記録された設定を読み込んでいるからです。


環境変数の読み込み順番

今からはこの設定ファイルを読み込む順番についてみてみましょう

1. /etc/profile

2. ~/.bash_profile 

  上のファイルがなければ

   2-1. ~/.bash_login

   2-2. ~/.profile

3. ~/.bashrc

4. /etc/bashrc

5. bash実行

設定ファイルを読む順番は上のようになっています。

上から説明すると

1. /etc/profile

このファイルはログイン時に読み込む全てのユーザ共通の設定が書いています。


  1. ~/.bash_profile 

    その後ユーザの[home]ディレクトリにある「.bash_profile 」を

    読み込みます。

      上のファイルがなければ下の順に読み込めます。

       2-1. ~/.bash_login

       2-2. ~/.profile

    ログインの時一回だけ読み込みます。


  2. ~/.bashrc

    このファイルはbashが読みこまれる度に更新されます。

    設定を変更する時は[bash]とコマンドを打って設定ファイルへの更新が反映されます。


  3. /etc/bashrc

    このファイルはシステム全体の関数とエイリアスに関する設定が記録されています。ここでデフォルトのプロンプトを決める「PS1」の設定などをしています。


「PS1」は何?

プロンプトの設定はシェル変数(環境変数)によって定義されます。(上の話と一緒)

bashの場合PS1という名前のシェル変数です。なぜPS1なのかは、

マニュアルによると”The primary prompt string”

つまりプライマリプロンプト文からです。

"The secondary prompt string"という2番目のプロンプトを指すPS2もあります。


  1. bash実行


参考ページ

http://oxynotes.com/?p=5418