このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:bashの設定ファイル
bashの設定ファイル
これまで、さまざまなシェルの設定方法について学んできました。しかし、せっかく自分好みにカスタマイズした設定も、bashを終了すると一時的なものであれば消えてしまいます。次回以降に同じ設定を維持するためには、bashの設定ファイルに設定を記述する必要があります。
bash
の起動時に読み込まれる設定ファイルはいくつか存在しますが、基本的にはユーザーのホームディレクトリにある ~/.bashrc
ファイルを編集することで、多くのカスタマイズが可能です。ここでは、~/.bashrc
ファイルの役割と、設定を永続化する方法について解説します。
ログイン時におけるシェル(bash)の設定ファイルの読み込み順序
下図は、シェル(bash)の初期化ファイルの読み込み順序を示しています。以下に各ファイルの役割と読み込み順序について説明します。
注意:bashの設定ファイルを読み込む順序や読み込むファイルはディストリビューションによって異なります。
この流れにより、システム全体の設定とユーザー個別の設定が適切に反映されるようになります。
- /etc/profile:
システム全体の初期化ファイル。ログインシェルが起動する際に最初に読み込まれます。 - /etc/bash.bashrc(Debian系のみ):
Debian系のシステムで使用される、システム全体のBashシェルの初期化ファイル。ログインシェルが起動する際に読み込まれます。 - ~/.bash_profile:
ユーザー個別の初期化ファイル。ユーザーがログインする際に読み込まれます。このファイルが存在しない場合、「~/.bash_login」に進む。- ~/.bash_login:
~/.bash_profileが存在しない場合に読み込まれるユーザーの初期化ファイル。このファイルが存在しない場合、「~/.profile」に進む。 - ~/.profile:
/.bash_profileと/.bash_loginが存在しない場合に読み込まれる初期化ファイル。
- ~/.bash_login:
- ~/.bashrc:
ユーザー個別のBashシェルの初期化ファイル。他の初期化ファイルからも読み込まれます。 - /etc/bashrc(Red Hat系のみ):
Red Hat系のシステムで使用される、システム全体のBashシェルの初期化ファイル。
bash起動時におけるシェル(bash)の設定ファイルの読み込み順序
下図は、シェル(bash)の初期化ファイルの読み込み順序に関する、Debian系およびRed Hat系のシステムの違いを示しています。
注意:bashの設定ファイルを読み込む順序や読み込むファイルはディストリビューションによって異なります。
- Debian系システムでは、まずシステム全体の設定ファイル(/etc/bash.bashrc)が読み込まれ、その後ユーザー個別の設定ファイル(~/.bashrc)が読み込まれます。
- Red Hat系システムでは、ユーザー個別の設定ファイル(~/.bashrc)が読み込まれた後にシステム全体の設定ファイル(/etc/bashrc)が読み込まれます。
このように、システムごとに初期化ファイルの読み込み順序が異なり、それぞれのシステムの特性に応じた設定が行われるようになっています。
結局、設定はどのファイルに書くべきか
bash
にはディストリビューションによって異なりますが、以下のような設定ファイルがあります。
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
これらのファイルの中で、ユーザーが個別に設定を行う際には、主に ~/.bashrc
を編集します。このファイルは、ログインシェルと非ログインシェルの両方で読み込まれるため、ターミナルを開くたびに設定が適用されます。
ポイント
- ログインシェル:ユーザーがログインしたときに起動するシェル。
- 非ログインシェル:ログインシェルから起動されるサブシェルや、新たに開いたターミナルで起動するシェル。
多くの設定はシェルを起動するたびに毎回適用する必要があるため、
基本的には ~/.bashrc
に設定を書いておけば問題ありません。
~/.bashrc
に設定を追加する
前述の「環境変数を設定する:exportコマンド」の例で、less
コマンド終了時に画面を消去しない --no-init
オプションを常に適用したい場合、~/.bashrc
に環境変数 LESS
を定義します。
通常の less
コマンドの動作
user01@ubuntu:~$ less /etc/crontab
crontab
ファイルの内容が表示されます。q
キーを押してless
を終了すると、画面が消去されてプロンプトに戻ります。
~/.bashrc
の内容
cat
コマンドで~/.bashrc
ファイルの内容を確認します。
user01@ubuntu:~$ cat ~/.bashrc
以下は、~/.bashrc
ファイルの一部です。
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
...(省略)...
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
export LESS='--no-init'
を追加する場所
設定を追加する際は、ファイルの末尾に記述するのが一般的です。既存の設定に影響を与えないように、以下の手順で追加します。
1.ファイルの末尾に移動する
エディタで ~/.bashrc
を開き、ファイルの最後までスクロールします。
2.新しい行を追加する
ファイル末尾に以下の行を追加します。
export LESS='--no-init'
3.保存して終了する
変更を保存してエディタを終了します。
編集手順
vi
エディタを使用する場合
1.~/.bashrc
を開く
user01@ubuntu:~$ vi ~/.bashrc
2.挿入モードに入る
ファイル末尾で i
キーを押して挿入モードに入ります。
3.設定を追加する
export LESS='--no-init'
4.保存して終了する
Esc
キーを押してコマンドモードに戻り、次に :wq
と入力して Enter キーを押します。
nano
エディタを使用する場合(Ubuntuで推奨)
1.~/.bashrc
を開く
user01@ubuntu:~$ nano ~/.bashrc
2.設定を追加する
ファイル末尾に移動し、以下の行を追加します。
export LESS='--no-init'
3.保存して終了する
Ctrl + S
を押して保存します。Ctrl + X
を押してエディタを終了します。
設定を反映させる
~/.bashrc
を編集した後、設定を反映させるために、現在のシェルで以下のコマンドを実行します。
user01@ubuntu:~$ source ~/.bashrc
または、ターミナルを再起動しても設定が適用されます。
動作確認
設定が正しく適用されたか確認するために、less
コマンドを実行します。
user01@ubuntu:~$ less /etc/crontab
crontab
ファイルの内容が表示されます。q
キーを押してless
を終了します。- 画面が消去されずにプロンプトに戻ります。
~/.bashrc
を元の状態に戻す
設定を元に戻したい場合は、~/.bashrc
から追加した行を削除します。
手順(nanoエディタ)
1.~/.bashrc
を編集する
user01@ubuntu:~$ nano ~/.bashrc
2.追加した行を削除する
export LESS='--no-init'
の行を探し、削除します。
3.保存して終了する
Ctrl + S
を押して保存します。Ctrl + X
を押してエディタを終了します。
4.設定を反映させる
ターミナル(bash
)を再起動します。
まとめ
~/.bashrc
は、ユーザーごとの bash の設定ファイルであり、シェル起動時に自動的に読み込まれます。- カスタマイズした設定を永続化するには、
~/.bashrc
に設定を記述します。 - 環境変数やエイリアスの設定を追加する際は、ファイルの末尾に記述すると管理しやすくなります。
- 設定を反映させるには、
source ~/.bashrc
を実行するか、ターミナルを再起動します。 - 設定を元に戻したい場合は、該当する行を削除し、再度
source ~/.bashrc
を実行します。
これで、bash の設定ファイルを利用してシェルのカスタマイズを永続化する方法を学びました。自分好みのシェル環境を構築し、作業効率を向上させましょう。