1. ホーム
  2. 記事一覧
  3. 「.bashrc」と「.bash_profile」の使いこなし

2023.10.31

「.bashrc」と「.bash_profile」の使いこなし

LinuxやmacOSを利用する多くのユーザーは、コマンドラインインターフェースを日常的に使用しています。その中心にあるのがbashシェルです。このシェルの動作や外見をカスタマイズするための重要なファイルが、.bashrc.bash_profileです。

この記事の目的

この記事の目的は、.bashrc.bash_profileの基本的な役割と、それらを効果的に使用する方法を理解することです。特に、LinuxやmacOSの初心者、またはシェルのカスタマイズに興味を持つ中級者をターゲットとしています。

シェルとは?

シェルはユーザーとオペレーティングシステム(OS)との間のインターフェースを提供するプログラムです。ユーザーからのコマンドを受け取り、それをOSに伝えて実行します。シェルは、テキストベースのコマンドラインインターフェース(CLI)やグラフィカルユーザーインターフェース(GUI)の形で存在することができますが、ここでは主にCLIに焦点を当てます。

シェルはユーザーがOSにコマンドを入力するための手段を提供します。シェルは、ユーザーからのコマンドを解釈し、OSに伝えて実行します。また、環境変数を管理したり、スクリプトを実行したりすることもできます。

bashシェルの役割

bash(Bourne Again SHell)は、多くのLinuxディストリビューションやmacOSでデフォルトとして利用されるシェルの一つです。bashは、1979年に登場したオリジナルのBourneシェルの後継として、1989年にBrian Foxによって作成されました。bashシェルの主な役割は以下の通りです。

コマンドの実行

ユーザーからのコマンドを解釈し、OSに伝えて実行します。

スクリプトの実行

bashは、一連のコマンドを含むスクリプトを実行する能力も持っています。これにより、ルーチンタスクを自動化することができます。

環境変数の管理

bashは、環境変数の設定や取得を行うことができます。これにより、プログラムの動作をカスタマイズすることができます。

.bashrcとは?

.bashrcは、bashシェルがインタラクティブモードで起動されるたびに自動的に実行される設定ファイルです。このファイルには、シェルの挙動をカスタマイズするためのコマンドや設定が記述されています。

具体的には、以下のような設定やカスタマイズが.bashrcに含まれます:

エイリアスの設定

コマンドのエイリアスを定義することで、コマンドの実行を簡略化することができます。

プロンプトのカスタマイズ

プロンプトの表示形式を変更することで、シェルの操作をより便利にすることができます。

環境変数の設定

環境変数を設定することで、プログラムの動作をカスタマイズすることができます。

関数の定義

関数を定義することで、繰り返し使用するコードを簡略化することができます。

ユーザーは、この.bashrcファイルを編集することで、シェルの挙動や外見を独自にカスタマイズすることができます。

.bashrcファイルの定義と主な用途

.bashrcファイルは、bashシェルのユーザー固有の設定ファイルの一つです。このファイルには、シェルのセッションごとの挙動をカスタマイズするためのコマンドや設定が記述されています。

一般的な設定やカスタマイズ

エイリアスの設定

よく使うコマンドを短縮形に変換して、効率的に操作できるようにします。例えば、lsコマンドをllにエイリアスすることで、ls -alコマンドと同じように実行することができます。

プロンプトのカスタマイズ

シェルのプロンプトの外見や情報を変更します。PS1環境変数を設定することで、プロンプトの表示形式を変更することができます。

環境変数の設定

ソフトウェアやシステムの動作を制御するための変数を設定します。PATH環境変数を設定することで、コマンドの検索パスを変更することができます。

関数の定義

よく使う一連のコマンドを関数として定義し、名前をつけて簡単に呼び出せるようにします。例えばcdコマンドとlsコマンドを組み合わせた関数を定義することで、cdコマンドとlsコマンドを1つのコマンドで実行することができます。

# .bashrcまたは.bash_profileに以下の関数を追加
cdls() {
    cd "$@" && ls
}

設定の適用

この関数を.bashrcまたは.bash_profileに追加した後、ターミナルをリロードするか、source .bashrc(またはsource .bash_profile)を実行して設定を適用します。この設定の適用は忘れやすい手順ですのでしっかりと覚えておきましょう。

その後、cdls [ディレクトリ名]というコマンドをターミナルで実行することで、指定したディレクトリに移動した後にそのディレクトリ内のファイルやフォルダをlsコマンドで表示することができます。

.bashrcが読み込まれるタイミング

.bashrcは、bashシェルがインタラクティブモードで起動されるたびに読み込まれます。具体的なシナリオは以下の通り。

新しいターミナルウィンドウやタブの開始

GUI環境で新しいターミナルウィンドウやタブを開始すると、インタラクティブなbashセッションが開始され、.bashrcが読み込まれます。

新しいインタラクティブなサブシェルの開始

bashコマンドを実行して新しいインタラクティブなサブシェルを開始すると、.bashrcが再び読み込まれます。

ログインシェルの場合

多くのユーザーは.bash_profileから.bashrcを明示的に読み込む設定をしているため、ログイン時にも.bashrcの内容が適用されることが一般的です。

.bash_profileとは?

.bash_profileは、bashシェルのユーザー固有の設定ファイルのもう一つです。このファイルはユーザーがログインする際に読み込まれます。つまりシステムにログインするときや、ログインシェルとして新しいターミナルウィンドウを開始するときに、このファイルの内容が適用されます。

.bash_profileは主に、ログイン時に一度だけ実行したいコマンドや設定を含めるためのものです。ログイン時に一度だけ実行する環境変数の設定や、特定のプログラムの起動などが考えられます。以下の例を参考にしてください。

ログイン時にvimエディタを起動したい場合

# ログイン時にvimを起動
vim &

ログイン時にPATH環境変数に/usr/local/binを追加したい場合

# PATHに/usr/local/binを追加
export PATH=$PATH:/usr/local/bin

.bashrcと.bash_profileの違い

.bashrcと``.bash_profile`は、bashシェルの設定やカスタマイズを行うためのファイルですが、主に読み込まれるタイミングや目的が異なります。

.bashrc

このファイルは、bashシェルがインタラクティブモードで起動されるたびに読み込まれます。つまり、新しいターミナルセッションを開始する際や、新しいインタラクティブなサブシェルを開始する際にこのファイルの設定が適用されます。

.bash_profile

このファイルは、ユーザーがシステムにログインする際(ログインシェルの場合)に読み込まれます。通常、リモート接続や新しいターミナルウィンドウの開始時に読み込まれます。

それぞれのファイルが読み込まれるシナリオ

.bashrc

  • 新しいターミナルウィンドウやタブを開始した時
  • bashコマンドを使用して新しいインタラクティブなサブシェルを開始した時

.bash_profile

  • システムにログインした時(例: リモート接続時)
  • 新しいログインシェルセッションを開始した時(例: 新しいターミナルウィンドウを開始した時)

一般的なユースケースと例

.bashrc

  • シェルのプロンプトの外見や情報をカスタマイズする設定
  • エイリアスの設定(例: alias ll='ls -la')
  • インタラクティブなセッションでのみ必要な関数の定義

.bash_profile

ログイン時に一度だけ実行する環境変数の設定

例: export PATH="$HOME/bin:$PATH"

.bashrc`を明示的に読み込む設定(多くのユーザーはこの設定を持っています)

[[ -f ~/.bashrc ]] && source ~/.bashrc

このコマンド[[ -f ~/.bashrc ]] && source ~/.bashrcはbashシェルの条件式とコマンドを組み合わせたもので「ユーザーのホームディレクトリに.bashrcファイルが存在し、それが通常のファイルである場合、その.bashrcファイルを現在のシェルセッションで読み込む」という意味になります。各部分の意味を以下に詳細に解説します。

[[ -f ~/.bashrc ]] この部分は、条件式です。具体的には以下の意味を持ちます。

[[ ... ]]

bashシェルの条件評価の構文です。

-f

このフラグは、指定されたファイルが存在し、かつそれが通常のファイルであるかどうかを確認するためのものです。

~/.bashrc

ユーザーのホームディレクトリにある.bashrcファイルを指します。

したがって、[[ -f ~/.bashrc ]]は「ホームディレクトリに.bashrcファイルが存在し、かつそれが通常のファイルである場合」という条件を表しています。

&&

このシンボルは、論理ANDを表すもので、左のコマンドが成功した場合(真を返した場合)にのみ、右のコマンドを実行します。

source ~/.bashrc

このコマンドは、指定されたスクリプト(この場合は~/.bashrc)を現在のシェルセッションで実行します。これは、新しいサブシェルを開始するのではなく、現在のシェルセッションでスクリプトを読み込むために使用されます。

ログイン時に特定のプログラムを起動する設定

効果的な利用方法

環境変数の設定方法

環境変数はシェルや他のプログラムが参照する変数です。これを設定するには、.bashrc.bash_profileexportコマンドを使用します。

# ユーザーのホームディレクトリ内のbinディレクトリをPATH環境変数に追加する
export PATH="$HOME/bin:$PATH"

説明

  • exportコマンドは、環境変数を設定します。
  • PATH環境変数は、コマンドの検索パスを指定します。
  • $HOME/binは、ユーザーのホームディレクトリ内のbinディレクトリを表します。
  • :$PATHは、既存のPATH環境変数に追加することを表します。

エイリアスの追加方法

エイリアスは、長いコマンドを短縮して入力するための方法です。.bashrcaliasコマンドを使用して定義します。

# `ll`を`ls -la`のエイリアスに設定する
alias ll='ls -la'

説明

  • aliasコマンドは、エイリアスを設定します。
  • llは、エイリアスの名前です。
  • ls -laは、エイリアスに割り当てるコマンドです。

その他のカスタマイズ例

  • シェル関数の定義: よく使うコマンドの組み合わせを一つの関数として定義して、簡単に呼び出すことができます。
  • コマンドライン補間の設定: タブキーを使用してコマンドやファイル名を自動補完する設定を行うことができます。

よくあるトラブルとその対処法

ファイルが読み込まれない場合のトラブルシューティング

  1. ファイルの存在確認 まず、.bashrc.bash_profileがホームディレクトリに存在するか確認してください。ls -la ~ コマンドで確認できます。
  2. 設定の再読み込み 変更した設定を読み込むために、source ~/.bashrc または source ~/.bash_profile を実行します。
  3. ログインシェルの確認 .bash_profileはログインシェルのときにのみ読み込まれます。通常のシェルでの読み込みを確認する場合、.bashrcを確認してください。
  4. エラーメッセージの確認 シェルを起動するときにエラーメッセージが表示される場合、そのメッセージをもとに問題の箇所を特定し、修正します。

重複した設定の問題点と解決策

  1. 設定の確認 同じ設定やエイリアスが.bashrc.bash_profileの両方に存在するか確認します。重複する設定は不要な方を削除します。
  2. エイリアスの確認 aliasコマンドを実行して、現在のエイリアスの一覧を表示します。重複または不要なエイリアスを削除します。
  3. 設定の整理 重複した設定や不要な設定を削除した後、関連する設定をまとめて、設定ファイルを整理します。例えば、環境変数の設定は一か所にまとめると見やすくなります。
  4. コメントの利用 設定ファイル内で、各設定の目的や機能を明確にするためのコメントを追加すると、後で設定を確認や修正する際に役立ちます。

まとめ

.bashrc.bash_profileは、bashシェルのカスタマイズや設定を行うためのファイルです。 .bashrcは、インタラクティブシェル(ターミナルやコマンドライン)を起動するたびに読み込まれます。 .bash_profileは、ログイン時に一度だけ読み込まれます。

これらのファイルを使用して、環境変数の設定やシェルのエイリアスを追加などのカスタマイズを行うことができます。ただし、不適切な設定や重複した設定が存在すると、シェルの動作に影響を与える可能性があります。設定のトラブルシューティングや、適切な設定方法についての知識は、効率的なシェルの利用において非常に有用です。

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事