現在、Red Hat Linux 9を利用しています。ホームディレクトリに「.bashrc」や「.bash_profile」というファイルがあるのですが、これは何でしょうか?
ご質問にあるファイルは、どちらもユーザーのホームディレクトリに置かれ、シェルが起動するときに実行される初期化ファイルです。
シェルには、大きく分けて2つの役割があります。まず1つ目は、ユーザーがコマンドを実行するためのコマンドライン環境を提供し、ユーザーとOSの中枢であるカーネルとのインタフェースの役割を果たすことです。
もう1つは、ユーザーがログインを行った際に、環境を整えるためにさまざまなファイルを実行し、初期化を行うことです。初期化のために実行されるファイルはシェルの種類によっても異なり、今回ご質問にあるファイルはbash(Bourne Again SHell)が起動されるときに実行されます。
以下では、bashが起動するときにどのファイルをどのような流れで実行しているのかを交え説明していきましょう。
ユーザーがログインに成功した後、bashは「ログインシェル」として一般的に以下のような流れでファイルを順次検索し、ファイルが存在していれば実行し起動します。
例えば、コマンドラインからのbashの起動、suコマンドで別のユーザーになった場合など、ログインシェルとしての起動ではない場合は、5のみが実行されます。
/etcディレクトリ配下にある/etc/profile、/etc/bashrcといったファイルはすべてのユーザーに影響を与えるグローバルな初期設定が記述されており、「システムプロファイル」と呼ばれています。このシステムプロファイルは、ユーザーのホームディレクトリにあるファイルよりも先に実行されます。
各ユーザーごとにログインシェル(bash)の環境をカスタマイズするという場合には、~/.bash_profile、~/.bashrcを編集します。
すでに説明したように、~/.bash_profileはbashがログインシェルとして起動されたときにのみ実行されますが、~/.bashrcはログイン時も含めbashが起動するたびに実行される点が違います。
そのため、~/.bash_profileにはユーザーがログイン時にのみ行う処理(設定)を記述し、~/.bashrcにはシェル変数や環境変数、エイリアスなどユーザー環境の基本となる設定を記述するのが一般的です。
bashの起動時に読み込まれるファイルはテキストファイルのため、簡単に編集できます。しかし、編集しただけでは変更が反映されず、ログアウトしてログインし直すか、次のようにsourceコマンドを使用する必要があります。
$ source .bash_profile
bashの起動ファイル内で別の起動ファイルを読み込む場合にも、sourceコマンドが使用されています。sourceコマンドは「.」と書くこともでき、例えば~/.bash_profileファイル中で~/.bashrcを読み込む場合は以下のように記述されています。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
なお、これらの実行ファイルはシェルスクリプトと同じ形式で記述されていますが、実行属性を持っておらず直接実行することはできません*。
最後に、ここではbashについて説明しましたが、シェルにはほかにも多くの種類があります。シェルによって読み込まれるファイルやタイミング、環境変数の設定方法、関数の文法などに違いはありますが、考え方は同じです。詳細についてはオンラインマニュアルなどをご参照ください。
̃/.bash_profileファイルが存在しない場合、̃/.bash_loginファイルを実行する。̃/.bash_profileファイル、̃/.bash_loginファイルが存在しない場合は、̃/.profileファイルを実行する。
/etc/profile.dディレクトリ配下にあるファイルは除く。各種ツール起動時に実行され環境変数やエイリアスが設定される。
Copyright © ITmedia, Inc. All Rights Reserved.