bashの起動スクリプト
よい解説があったので 覚書しておきます.
manをみりゃいいんじゃないか...という話もあります.
でも説明してくれた労力に感謝です.
1.
質問に対して回答いたします。
1、ログインシェルの意味。 これはユーザーがログインした際に起動されるシェルのことです。 ユーザーがログインすると、/etc/passwdファイルに設定されている シェルが起動します。このシェルが「ログインシェル」です。 Linuxでは、デフォルトでbashが使用されますが、cshやtcshも使用できます。 (ユーザーを新規に作成する作業で、ユーザーが使用するシェルを設定できます)
なお、参考までに設定ファイルの意味を書いておきます。 ●~/.bash_profile bashがログインシェルとして起動されたときに1回だけ参照され る設定ファイル。
●~/.bash_login bashがログインシェルとして起動されたときに1回だけ参照される 設定ファイル。 元はbashより起源が古いCシェル(csh)では.loginファイルが由来の設定ファイルで す。 cshでは.loginファイルがログイン時に1回だけ読み込まれます。 これと同じ機能をbashで実現したものです。ただしbashでは、上の.bash_profileの 方が先に読み込まれます。 もし「/.bash_profileがない」場合、/.bash_loginがあればその内容が読み込まれ ます。
●~/.profile bashがログインシェルとして起動されたときに1回だけ参照される設 定ファイル。 もし「/.bash_loginがない」場合、この/.profileがあればその内容が読み込まれ ます。
●~/.bashrc これはユーザーがログインした後で、新たにシェル(Bash)を起動し たときに読み込まれる設定ファイル。
2、なにを/.bash_profileに書き、何を/.bashrcに書き込むのかの区別です。
通常の処理で必要な設定を書き込むファイルは、 「/.bash_profile」、「/.bashrc」の2つで十分です。 これは、~/.bash_profileは(1.で書きましたが、)ログインシェルが起動時に 真っ先に読み込まれるファイルなので、 これを作成しておけば確実に設定が読み込まれること。また ~/.bashrcについては、 またシェルを立ち上げるたびに処理のために必要な環境変数や設定を読み込ませるた めです。
それでは「なにを/.bash_profileに書き、何を/.bashrcに書き込むのかの区別」で すが ~/.bash_profileに記述してよい設定 ・コマンド検索パスの設定(PATH変数)
~/.bashrcに記述した方がよい設定 ・エイリアス(別名)の設定 これは 「alias ls='ls -l'」のようにコマンド文字列に別名をつける設定です。 ・コマンドプロンプトの表示設定(PS1変数)
> refe,TERM,PS1は、~/.bash_profileに移すと動かなくなるのは確認済みですが。
これは~/.bash_profileファイルの内容は、ログイン時に1回しか読み込まれないため です。 最初のシェル以外に、次にシェルを起動しても 上の1.に書いたとおり (またご自身が下に書かれたとおりですが)、それらの後から起動したbashは /.bash_profileの設定を読み込まないため、「/.bash_profileに記述された refe,TERM,PS1 の設定」は 無視されます。そのため動かないのです。 起動するすべてのbashに設定を反映するには、 (1)この3つの環境変数は~/bashrcファイルに記述し、 (2)さらに~/.bashrc_profileの最後の行に「source .bashrc」と追加すると良いと思 います。 これで最初にシェルが起動した時点で、/.bash_profileファイルから/.bashrcファ イルが呼ばれるので、 結果としてすべての使用するシェルで.bashrcの設定が使えます。
2.
-----Original Message----- From: fedora-bounces @ linuxml.net [mailto:fedora-bounces @ linuxml.net]On Behalf Of Ryutaro Amano Sent: Thursday, February 26, 2004 8:12 PM To: fedora @ linuxml.net Subject: [Fedora 1200] /.bash_profileと/.bashrc
Ryutaroと申します。 先日、Fedora Coreをインストールしました。 どうも、.bashrcと.bash_profileの違いがいま一つ分かりません。本など読む と、ログインシェルの場合、
1,/etc/profileを読み込む。 2,~/.bash_profileが存在すれば読み込む。 3,~/.bash_profileが存在せず ~/.bash_loginがあればそれを読み込む。 4,/.bash_profileも/.bash_loginも存在しない場合は、~/.profileを読み込む。 bashが別のシェルから読み込まれた場合は、~/.bashrcのみ読み込まれる。
とありますが、わからないのは、 1、ログインシェルの意味。 2、なにを/.bash_profileに書き、何を/.bashrcに書き込むのかの区別です。
1は、「ユーザーがログインした時に自動的に読み込まれるシェル」とあります。 私の場合、Gnomeをインストールして、グラフィカルモードで起動しています。 この場合は、bashがログインシェルとして起動されていると思うのですが、しか し、~/.bash_profileに書いても認識されないものがあるようです。 例えば、プロンプトとか、TERMの設定など。PATHは、認識されるようですが。 結局、/bash_profileと/.bashrcに書き込む物の区別はひとつ、ひとつ勉強し ていくしかないのでしょうか? とりあえず、~/.bashrcは以下のようになっています。
# .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi export TERM=vt100 export PS1='[\t \u:\w]\n\$ ' REFE_DATA_DIR=/usr/local/share/refe export REFE_DATA_DIR export JAVA_HOME=/usr/java/j2sdk1.4.2_03 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar refe () { /usr/local/bin/refe $@ 2>&1 | iconv -f euc-jp -t utf-8 } alias terminal='gnome-terminal --geometry=134x50 &'
refe,TERM,PS1は、~/.bash_profileに移すと動かなくなるのは確認済みですが。 こういうものは、~/bash_profileに書くべきだ、などの指針があれば教えていた だければと思います。
コメント
Comments powered by Disqus