Skip to content

Windows環境での.bashrcファイル存在時のコマンド実行問題修正

原文(日本語に翻訳)

.bashrcファイルを持つWindowsユーザーがbashコマンドを実行できなかった問題(リグレッション)を修正しました。

原文(英語)

Fixed a regression where Windows users with a .bashrc file could not run bash commands

概要

以前のバージョンで導入されたリグレッションにより、Windowsユーザーがホームディレクトリに .bashrc ファイルを持っている場合、Claude Code でbashコマンドが実行できなくなっていた問題が修正されました。この問題は、Bash初期化処理の変更が原因でした。

基本的な使い方

修正後の正常動作

bash
# Windows環境(WSL、Git Bash、Cygwinなど)
# ホームディレクトリに .bashrc が存在

C:\Users\username\.bashrc

# Claude Code セッション
claude

# bashコマンドを実行
> "ls -la を実行して"
> "git status を確認して"

# 以前の問題:
# - エラー: "Failed to initialize bash"
# - または: bashコマンドがハング

# 修正後:
# - 正常に .bashrc が読み込まれる
# - bashコマンドが期待通りに実行される

実践例

WSL(Windows Subsystem for Linux)での使用

bash
# WSL Ubuntu環境
# ~/.bashrc に環境設定

# .bashrc の内容例:
export PATH="$HOME/.local/bin:$PATH"
export NODE_ENV=development
alias ll='ls -alF'

# Claude Code を起動
claude

> "npm install を実行して"

# 以前: .bashrc が原因でbashコマンド失敗
# 現在: .bashrc が正しく読み込まれ、PATHやaliasが有効

Git Bash での使用

bash
# Git Bash(Git for Windows付属)
# C:\Users\username\.bashrc

# .bashrc設定例:
export EDITOR=vim
alias gs='git status'
alias gp='git pull'

# Claude Code セッション
claude

> "git status を実行して"
> "プロジェクトの変更をコミットして"

# bash aliasが正常に機能
# git操作がスムーズに実行される

カスタムシェル設定の利用

bash
# Windows + WSL環境
# 開発環境を .bashrc で設定

# .bashrc:
# Node.jsバージョン管理
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Python仮想環境
source ~/venv/bin/activate

# カスタムプロンプト
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

# Claude Code でこれらの設定が有効
claude

> "node --version を確認して"
> "python でスクリプトを実行して"

# 以前: 初期化エラーで設定が読み込まれない
# 現在: すべての環境設定が正常に適用される

Cygwin環境での使用

bash
# Cygwin環境
# /home/username/.bashrc

# .bashrc:
export CYGWIN=nodosfilewarning
alias cls='clear'

# Claude Code
claude

> "プロジェクトディレクトリに移動して ls を実行"

# Cygwin固有の設定が正しく適用される

エラーが発生していた典型的なシナリオ

bash
# 問題が発生していた設定例

# .bashrc に条件分岐を含む設定
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# または、対話モード判定
if [ "$PS1" ]; then
    # プロンプト設定
fi

# 以前のリグレッション:
# - これらの条件分岐でbash初期化が失敗
# - Claude CodeのBashツールが動作不能

# 修正後:
# - 条件分岐を含む複雑な.bashrcでも正常に処理
# - bash初期化が確実に完了

注意点

  • リグレッションとは: 以前のバージョンでは動作していた機能が、新しいバージョンで動かなくなること。このバグは、v2.1.30より前のバージョンで導入されていました。

  • .bashrc vs .bash_profile:

    • .bashrc: 非ログインシェル(Claude Codeが使用)で読み込まれる
    • .bash_profile: ログインシェルで読み込まれる
    • Claude Codeは主に .bashrc を使用します
  • Windows環境の種類:

    • WSL (Windows Subsystem for Linux): Linuxバイナリをネイティブ実行
    • Git Bash: MinGWベースのbashエミュレーション
    • Cygwin: POSIX互換レイヤー
    • すべての環境でこの修正が適用されます
  • トラブルシューティング: まだ問題が発生する場合:

    bash
    # .bashrc の構文エラーを確認
    bash -c "source ~/.bashrc"
    
    # エラー出力をチェック
    
    # Claude Code デバッグ
    claude --verbose
    
    > "bash --version を実行して"
  • パフォーマンスへの影響: 複雑な .bashrc(多数のaliasや重い初期化スクリプト)がある場合、bash起動が遅くなる可能性があります。

  • 代替設定ファイル: Claude Code専用の設定が必要な場合:

    bash
    # ~/.claude_bashrc を作成
    # Claude Code起動時に読み込まれる(将来の機能として検討中)
  • 環境変数の設定: .bashrcで設定した環境変数は、Claude Codeのbashコマンド内で有効です:

    bash
    # .bashrc
    export MY_API_KEY="secret"
    
    # Claude Code内で利用可能
    > "echo $MY_API_KEY を実行して"

関連情報