@tooljpさんをフォロー

[FAQ CENTER トップ]
[redhat linux 技術ドキュメント トップ]

linuxにおける bash 設定ファイル読み込みの順番


Redhat EL 6.2の場合

環境:RHEL 6.2 (run level 3)

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.2 (Santiago)
# grep :initdefault: /etc/inittab
id:3:initdefault:

以下に色々なログオンによる各bashファイルの読み込み順番についてまとめました。表内の数字は読み込まれる順番を表します。×は読み込まれない事を表します。~(チルダ)はユーザのホームディレクトリを表します。user01なら/home/user01です。

ログオンの方法 /etc/profile.d/*.sh /etc/profile /etc/bashrc ~/.bashrc ~/.bash_profile(注1)
コンソールログオン(テキストモードの通常のログオン) 1 2 3 4 5
su - (su コマンドをハイフン付き) 1 2 3 4 5
su (su コマンドをハイフン無し) 1 × 2 3 ×
su でコマンドを実行
(su -c <コマンド>)
× × × × ×
X-Window 起動後にターミナル起動 1 × 2 3 ×
ssh ログオン 1 2 3 4 5
ssh でリモートコマンド実行
(ssh <ユーザ名>@<ホスト名> <コマンド>
× × 1 2 ×
single モードで起動 1 × 2 3 ×
bash でコマンド実行
(bash -c <コマンド>)
× × × × ×
bash でシェルスクリプトファイルを実行
(bash -c <シェルスクリプトファイル名>)
× × × × ×

(注1)~/.bash_profileが読みこまれます。個人ごとの設定ファイルです。redhat系ではこのファイルがない場合には~/.bash_loginが読み込まれます。さらにこのファイルがない場合には~/.profileが読み込まれます。


Redhat EL 4の場合

日付 2009/2/20
環境 Redhat Enterprise linux 4


redhat系のログイン後の設定ファイルの読み込み順は以下の通りです。ディストリビューションにより異なる場合があるので注意。

(1) /etc/profile        
       
(2) /etc/bashrc
(3) ~/.bashrc
(4) ~/.bash_profile →(ない場合) ~/.bash_login →(ない場合) ~/.profile

(1)ユーザがログインすると通常はデフォルトである bashが起動し、/etc/profileを読み込みます。これは全ユーザで共通です。この設定ファイルはログイン時のみ使用されます。さらにredhat系では /etc/profile.d 以下のスクリプトが実行されます。

(2)/etc/bashrcが読みこまれます。全ユーザで共通です。redhat系のみです。

(3)~/.bashrcが読み込まれます。このファイルはログイン時以外にも、シェルを起動するごとに読みこまれます。個人ごとの設定ファイルです。

(4)~/.bash_profileが読みこまれます。個人ごとの設定ファイルです。redhat系ではこのファイルがない場合には~/.bash_loginが読み込まれます。さらにこのファイルがない場合には~/.profileが読み込まれます。
(注)~(チルダ)はユーザのホームディレクトリを表します。user01なら/home/user01です。

 

例としてプロンプトに現在のディレクトリ名を表示させてみます。

以下のコマンドを実行して /.bash_profileを開きます。

vi ~/.bash_profile

以下の行を追加します。

ps1によりコマンド待ち状態の表示を定義します。 \w は現在のディレクトリを表します。

export PS1='\u@\h[\w]\$'

 

設定内容をすぐに反映されるには、以下を実行します。

source ~/.bash_profile

 

プロンプトを開いてみます。以下の通り現在のパス(/usr/bin)が表示されています。

user1@testlinux[/usr/bin]$

 

その他プロンプトとして使用可能なエスケープシーケンスは以下の通りです(一例であり、その他にもあります。)

\h ホスト名
\H ホスト名 (FQDN)
\t 24時間制の時間
\T 12時間制の時間
\u ユーザ名
\w ディレクトリ(絶対パス)
\W 現在のディレクトリ
\! 現在のコマンドのヒストリ番号
\# 現在のコマンドのコマンド番号



[redhat linux 技術ドキュメント トップ]
[FAQ CENTER トップ]