105.1標準
対話用aliasやプロンプトは~/.bashrcへ集約している。
対話的ログインBashでも、ファイルが存在する場合だけ同じ設定を読み込ませる。
~/.bash_profileへ追加する一般的な記述はどれか。
× 不正解
. FILEは現在のシェルへ設定を反映する。-fで存在を確認してから~/.bashrcを読み込むのが一般的である。
詳細解説
誤り
exec $HOME/.bashrc現在のシェルを.bashrcの直接実行で置き換えようとする。
誤り。.bashrcは通常直接実行プログラムではなく、execすると現在のログインシェルを置換する危険もある。
正しい
[ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"存在する.bashrcを現在のログインシェルへ読み込む。
正しい。-fで通常ファイルの存在を確認し、dotコマンドで同じシェル環境へ設定を反映する。
誤り
bash $HOME/.bashrc子シェルで実行するため、aliasや変数変更が親ログインシェルへ残らない。
誤り。子Bash内でaliasや変数を作っても、終了後の親ログインBashには残らない。
誤り
export $HOME/.bashrc設定ファイルを読み込む構文ではない。
誤り。exportは変数名を受け取り、ファイルパスのコマンドを評価しない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c 'work_dir=$(mktemp -d); profile="$work_dir/.bashrc"; printf "SHARED_SETTING=loaded\n" > "$profile"; [ -f "$profile" ] && . "$profile"; printf "%s\n" "$SHARED_SETTING"; rm -f -- "$profile"; rmdir -- "$work_dir"'期待される結果
loaded理解のポイント
- -fで存在確認
- .はsource
- 子シェルを作らない
確認時の注意
- 確認環境: GNU Bash 5.2 / 一時ホーム
基礎のおさらい
短絡評価
&&の右側は-f検査が成功したときだけ実行されるため、未配置環境でもエラーを避けられる。
重複読込
設定ファイルを複数回sourceしても重複追加等が起きないよう、PATHやフック設定を冪等にする。
問題IDKP-105-617
確認環境GNU Bash 5.2 / 一時ホーム
最終技術確認2026-08-13
誤り・権利侵害を報告