Linux入門:コマンド操作のきほん
シェル設定ファイル
このレッスンで分かること
- 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 ログインシェル)
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_URL、API_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から.bashrcをsourceするのが定番で、ssh ログインでも alias を効かせるためのテクニック- 編集後は
source ~/.bashrcで再読み込み。再ログインなしで反映できる - プロジェクト固有設定は
.env+ dotenv / direnv に寄せ、シェル設定ファイルとは役割を分ける
次のレッスン
次は エイリアスで効率化 で、シェルの設定ファイルを編集して、環境をカスタマイズする方法をターミナルで体験します を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- bashrc と profile の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. bashrc と profile とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン