目次
概要
.bashrc
や .bash_profile
は、ユーザーログイン時やシェル起動時に環境を設定するための重要なファイルです。
しかし、これらに誤った記述を追加すると シェルが起動しない/コマンドが使えない/PATH が消える などの問題が発生します。
この記事では、典型的な原因とその修復方法を整理します。
主な原因と現象
原因 | 現象・症状 |
---|---|
コマンド構文エラー(例:if/do/done の不整合) | ログイン時に bash: syntax error near unexpected token などのエラーが表示される |
PATH 変数の上書き・消失 | コマンドが「見つからない(command not found)」となる |
export や alias の誤記 | 環境変数が設定されず挙動が不安定になる |
無限ループ(source を繰り返すなど) | ログインできなくなる、CPU 使用率が上がる |
権限・所有権の誤り | ファイルが読み込まれず、設定が反映されない |
1. 緊急時の応急処置(ログインできない場合)
✅ シングルクォート付きでログインして .bashrc
をスキップ
bash --noprofile --norc
このコマンドで .bashrc
と .bash_profile
を読み込まずにシェルを起動できます。
これにより問題のファイルを安全に修正できます。
2. 問題の特定と修復手順
【手順①】構文エラーの確認
bash -n ~/.bashrc
bash -n ~/.bash_profile
→ エラー行があれば出力されます。
修正後は再読み込みを行います。
source ~/.bashrc
【手順②】PATH 変数が壊れていないか確認
echo $PATH
通常 /usr/local/bin:/usr/bin:/bin
などが含まれています。
もし空になっている場合、以下のように復旧します。
export PATH=/usr/local/bin:/usr/bin:/bin:$PATH
その後、.bashrc
の中で上書きしていないか確認しましょう。
【手順③】無限ループを確認
以下のような記述は危険です。
source ~/.bashrc
.bashrc
の中で自分自身を呼んでいると、無限ループに陥ります。
もし必要であれば、以下のように条件付きで呼び出します。
if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases
fi
【手順④】権限・所有権を確認
ファイルが正しい権限であるか確認します。
ls -l ~/.bashrc ~/.bash_profile
適切な権限は以下です。
-rw-r--r-- (所有者:自分)
修正例:
chmod 644 ~/.bashrc
chown $USER:$USER ~/.bashrc
【手順⑤】元の正常なファイルに戻す(バックアップがない場合)
他の正常なユーザーからコピーするか、最小限の内容を再作成します。
cat > ~/.bashrc <<'EOF'
# Basic Bash configuration
export PATH=/usr/local/bin:/usr/bin:/bin:$PATH
alias ll='ls -la'
EOF
3. 再ログインで確認
設定を反映させたら、シェルを再起動または再ログインして確認します。
exit
→ 再ログイン後にコマンドが正常に動くか、PATH が正しいか確認します。
まとめ:原因と解決方法対応表
原因 | 解決方法 | コマンド例 |
---|---|---|
構文エラー | bash -n で構文チェック後に修正 | bash -n ~/.bashrc |
PATH 上書き | 正しい PATH を再設定 | export PATH=/usr/local/bin:/usr/bin:/bin:$PATH |
無限ループ | source ~/.bashrc を削除または条件付き呼び出し | if [ -f ~/.bash_aliases ]; then source ~/.bash_aliases; fi |
権限誤り | 権限・所有権を修正 | chmod 644 ~/.bashrc |
ファイル破損 | 最小構成で再作成 | 上記 cat > ~/.bashrc コマンド |
補足
.bashrc
は非ログインシェル、.bash_profile
はログインシェルで読み込まれます。
設定を統一したい場合は .bash_profile
から .bashrc
を呼び出す構成にするのが推奨です。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi