.bashrcに追加したエイリアスが反応しないときの対処法
対象読者
- Linux/WSL環境でターミナル操作を始めたばかりの方
-
.bashrcにエイリアスを追加したが動作しなくて困っている方 - シェルの設定ファイルの仕組みを理解したい方
この記事で解決できること
-
.bashrcを編集したのにエイリアスが使えない - 新しく追加した環境変数が反映されない
-
command not foundと表示されてしまう
結論
.bashrcを編集しただけでは、現在開いているターミナルには反映されません。以下のコマンドで再読み込みが必要です。
source ~/.bashrc
なぜ反映されないのか
.bashrcはシェル(ターミナル)の起動時に一度だけ読み込まれます。
つまり、すでに起動済みのターミナルは、起動した時点の.bashrcの内容しか知りません。ファイルを編集しても、自動的に再読み込みされることはありません。
ターミナル起動 → .bashrc読み込み → シェル利用可能
↑
この時点の.bashrcの内容が使われる
後から.bashrcを編集しても、起動済みのシェルには何も起こらないのです。
解決方法は2つ
方法1: sourceコマンドで再読み込み
source ~/.bashrc
sourceコマンドは、指定したファイルを現在のシェルで実行します。これにより、新しく追加したエイリアスや環境変数が即座に反映されます。
なお、.(ドット)はsourceの省略形として使えます。
. ~/.bashrc
方法2: ターミナルを開き直す
新しいターミナルを開けば、その時点の.bashrcが読み込まれます。ただし、作業中のターミナルを閉じたくない場合は方法1を使います。
実践例
AWS CLIの認証情報を切り替えるエイリアスを追加する場合を考えます。
# .bashrcに追記
alias cpstg='export ENV=stg && export AWS_ACCOUNT_ID=123456789012 && export AWS_PROFILE=my-stg'
編集後、以下を実行します。
source ~/.bashrc
これでエイリアスが使えるようになります。
cpstg
echo $ENV # stg と表示される
まとめ
-
.bashrcの変更は自動的には反映されない -
source ~/.bashrcで現在のシェルに再読み込みできる - 新しいターミナルを開けば自動的に最新の設定が適用される
- 設定ファイルは起動時に一度だけ読み込まれる仕組みを理解しておく
この仕組みを知っておくと、シェルの設定をいじるときに無駄なトラブルシューティングを避けられます。