このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:bashの設定ファイル

bashの設定ファイル

 これまで、さまざまなシェルの設定方法について学んできました。しかし、せっかく自分好みにカスタマイズした設定も、bashを終了すると一時的なものであれば消えてしまいます。次回以降に同じ設定を維持するためには、bashの設定ファイルに設定を記述する必要があります。

 bash の起動時に読み込まれる設定ファイルはいくつか存在しますが、基本的にはユーザーのホームディレクトリにある ~/.bashrc ファイルを編集することで、多くのカスタマイズが可能です。ここでは、~/.bashrc ファイルの役割と、設定を永続化する方法について解説します。

ログイン時におけるシェル(bash)の設定ファイルの読み込み順序

 下図は、シェル(bash)の初期化ファイルの読み込み順序を示しています。以下に各ファイルの役割と読み込み順序について説明します。

注意:bashの設定ファイルを読み込む順序や読み込むファイルはディストリビューションによって異なります。

この流れにより、システム全体の設定とユーザー個別の設定が適切に反映されるようになります。

  1. /etc/profile
    システム全体の初期化ファイル。ログインシェルが起動する際に最初に読み込まれます。
  2. /etc/bash.bashrc(Debian系のみ)
     Debian系のシステムで使用される、システム全体のBashシェルの初期化ファイル。ログインシェルが起動する際に読み込まれます。
  3. ~/.bash_profile
     ユーザー個別の初期化ファイル。ユーザーがログインする際に読み込まれます。このファイルが存在しない場合、「~/.bash_login」に進む。
    • ~/.bash_login
       ~/.bash_profileが存在しない場合に読み込まれるユーザーの初期化ファイル。このファイルが存在しない場合、「~/.profile」に進む。
    • ~/.profile
      /.bash_profileと/.bash_loginが存在しない場合に読み込まれる初期化ファイル。
  4. ~/.bashrc
     ユーザー個別のBashシェルの初期化ファイル。他の初期化ファイルからも読み込まれます。
  5. /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 の設定ファイルを利用してシェルのカスタマイズを永続化する方法を学びました。自分好みのシェル環境を構築し、作業効率を向上させましょう。