Linux入門:コマンド操作のきほん

シェル設定ファイル

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • bash の主要設定は .bash_profile (ログイン時) と .bashrc (対話シェル時)
  • .bash_profile から source ~/.bashrc を呼ぶ慣習で SSH ログイン時も alias が効く
  • 編集後の反映は source ~/.bashrc、プロジェクト固有値は .env + direnv に分離

シェル設定ファイル とは

シェルの設定ファイルを編集して、環境をカスタマイズする方法をターミナルで体験します。本レッスンでは、シェル設定ファイル の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜ重要か

環境変数や alias、プロンプトのカスタマイズは、毎回手で export するわけにはいきません。シェルには「起動時に自動的に読み込まれる設定ファイル」が用意されており、PATH の追加、ツールの初期化、補完の有効化、シェルの見た目調整など、開発者が日々触る土台はだいたいここに集まります。.bashrc .bash_profile .zshrc といったファイル名は聞いたことがあるはずですが、それぞれの読み込まれるタイミングの違いを意識できているかで、設定したのに反映されないハマりを大きく減らせます。

本レッスンでは bash と zsh それぞれの設定ファイルの役割と読み込み順序を整理します。本コースの executor 環境では設定ファイルの編集 / 永続化はできないため、概念と読み込み順を抑えるテキストレッスンとして扱います。

ファイル一覧 (bash)

ファイル用途読み込まれるタイミング
/etc/profileシステム全体のログイン設定ログインシェル起動時
/etc/bash.bashrcシステム全体のインタラクティブ設定対話シェル起動時
~/.bash_profileユーザのログイン設定ログインシェル起動時
~/.profileログイン時の汎用設定 (bash 以外でも読まれる)ログインシェル起動時
~/.bashrcユーザのインタラクティブ設定、alias対話シェル起動時
~/.bash_logoutログアウト時のクリーンアップログアウト時

ファイル一覧 (zsh)

ファイル用途
/etc/zshenv /etc/zprofile /etc/zshrcシステム全体の設定
~/.zshenv全シェル (非対話含む) で読み込み
~/.zprofileログインシェル時
~/.zshrc対話シェル時、alias やプロンプト
~/.zlogin ~/.zlogoutログイン後 / ログアウト時

図解 読み込み順 (bash ログインシェル)

diagram (will load when visible)

bash のログインシェルは ~/.bash_profile~/.bash_login~/.profile の順に探し、最初に見つかった1つだけを読みます。対話シェルは ~/.bashrc を読みます。.bash_profile の中で source ~/.bashrc を書いておくのが定番で、こうすると ssh ログイン でも普段の alias が効くようになります。

ログインシェルと対話シェル

bash には大きく分けて 2 種類の起動モードがあります。

  • ログインシェル (login shell): ssh user@host でログインしたとき、bash --login で起動したとき
  • 対話シェル (interactive shell): ターミナルアプリを開いたとき、bash を入力したとき

それぞれで読み込まれるファイルが違うため、PATH.bash_profile だけに書いて .bashrc に書かないと「ssh では効くがローカルターミナルでは効かない」のような状態になりがちです。

ターミナル

# よくある ~/.bash_profile の中身 if [ -f ~/.bashrc ]; then source ~/.bashrc fi export PATH="$HOME/bin:$PATH"

ターミナル

# よくある ~/.bashrc の中身 # 対話シェル以外では何もしないガード case $- in *i*) ;; *) return;; esac alias ll='ls -alF' export EDITOR=vim

書き換え後の反映方法

編集してもシェルを再起動しないと反映されません。source または . で再読み込みすると、新しいターミナルを開かなくても反映できます。

ターミナル

source ~/.bashrc # あるいは . ~/.bashrc

クラウド上の VM に SSH してファイルを編集する場合、.bashrc を壊すと次のログインができなくなる可能性があります。編集前に cp ~/.bashrc ~/.bashrc.bak でバックアップを取り、別のセッションを開いたままにしておくと安全に検証できます。

.env との関係

アプリケーション単位の環境変数は .env ファイルに書き、dotenv ライブラリで読み込ませることが多いです。シェル設定ファイルはユーザ全体に効く設定、.env はプロジェクト単位の設定、と用途を分けて管理するのが現代的なスタイルです。

ターミナル

# .env (Node.js プロジェクト) DATABASE_URL=postgres://localhost:5432/myapp PORT=3000 NODE_ENV=development
設定先スコープ
/etc/profile /etc/bash.bashrcシステム全体共通の PATH、ロケール
~/.bash_profile ~/.bashrcユーザ全体alias、エディタ、ツール初期化
.env + direnvプロジェクト単位DATABASE_URLAPI_KEY
export VAR=... (一時)そのシェルのみ一時的なテスト

.bashrc に開発プロジェクト固有の設定をどんどん書くと、他のプロジェクトに切り替えたときに古い値が残ってバグの温床になります。プロジェクト固有の値は .env + direnv のように「ディレクトリに入ったときだけ有効になる」仕組みを使うのが安全です。

この章のポイント

ここまでの要点 ログインシェル → .bash_profile、対話シェル → .bashrc の住み分け。.bash_profile から source ~/.bashrc の慣習で両方で効かせる。プロジェクト固有値は .env + direnv、シェル設定とは役割を分ける。

まとめ

  • シェルの設定ファイルは「ログインシェル / 対話シェルで読み込まれるタイミング」が異なる
  • bash は .bash_profile .bashrc .profile、zsh は .zshenv .zshrc .zprofile が中心
  • .bash_profile から .bashrcsource するのが定番で、ssh ログインでも alias を効かせるためのテクニック
  • 編集後は source ~/.bashrc で再読み込み。再ログインなしで反映できる
  • プロジェクト固有設定は .env + dotenv / direnv に寄せ、シェル設定ファイルとは役割を分ける

次のレッスン

次は エイリアスで効率化 で、シェルの設定ファイルを編集して、環境をカスタマイズする方法をターミナルで体験します を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. bashrc と profile の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. bashrc と profile とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

参考リンク