原文(日本語に翻訳)
BashToolは、シェルスナップショットが利用可能な場合、デフォルトでログインシェル(-l フラグ)をスキップするようになりました。これによりコマンド実行パフォーマンスが向上します。以前はこの動作に CLAUDE_BASH_NO_LOGIN=true の設定が必要でした。
原文(英語)
BashTool now skips login shell (-l flag) by default when a shell snapshot is available, improving command execution performance. Previously this required setting CLAUDE_BASH_NO_LOGIN=true.
概要
Claude CodeのBashToolがシェルコマンドを実行する際、シェルスナップショットが利用可能な場合はログインシェル(-l フラグ)を自動的にスキップするようになりました。ログインシェルは起動時に .bash_profile、.zprofile 等の初期化ファイルを読み込むため、大きなオーバーヘッドが発生していました。シェルスナップショットによって環境が既にキャプチャされているため、ログインシェルの起動をスキップしても問題がなく、コマンド実行が高速化されます。
基本的な使い方
この最適化は自動的に適用されます。特別な設定は不要です。
# v2.1.51以降は自動的にパフォーマンスが改善
# 以前のような環境変数設定は不要
# CLAUDE_BASH_NO_LOGIN=true ← 不要になった
# Claude Codeを通常通り起動するだけ
claude実践例
以前の手動設定が不要に
v2.1.51以前、パフォーマンスを改善するには手動設定が必要でした:
# 以前:手動でログインシェルを無効化していた
export CLAUDE_BASH_NO_LOGIN=true
claude
# 現在:シェルスナップショットが利用可能な場合は自動的に最適化
claude # これだけで最適化が適用されるシェルスナップショットの仕組み
Claude Codeはシェル環境を ~/.claude/shell-snapshots/ に保存します:
# スナップショットの確認
ls ~/.claude/shell-snapshots/
# スナップショットの例
# snapshot-zsh-2024-01-15-abc123.sh
# snapshot-bash-2024-01-15-def456.shスナップショットには現在の環境変数、PATH、その他のシェル設定が含まれており、毎回ログインシェルを起動せずとも正確な環境が再現されます。
パフォーマンス改善の体感
長いセッションや多くのbashコマンドを実行する場合に特に効果的です:
# Claudeにファイル処理タスクを依頼
# 以前:各コマンドでログインシェルが起動(遅い)
# 今後:スナップショットから直接実行(速い)
claude "すべてのTypeScriptファイルを見つけて型エラーをチェックしてください"CLAUDE_BASH_NO_LOGIN の扱い
# このフラグはまだ機能しますが、v2.1.51以降は
# スナップショットがある場合は自動的に同様の動作が適用されます
# シェルスナップショットが利用できない場合のフォールバックとして残っています
export CLAUDE_BASH_NO_LOGIN=true # 明示的に強制したい場合のみ使用注意点
- この最適化はシェルスナップショットが利用可能な場合にのみ適用されます。スナップショットが存在しない場合(初回起動時等)は従来通りログインシェルが使用されます。
- シェルスナップショットは
~/.claude/shell-snapshots/に保存されます(以前は/tmpでしたが、より信頼性の高い場所に変更されました)。 - ログインシェルの初期化スクリプトで設定している環境変数は、スナップショットにキャプチャされているため引き続き利用可能です。
- Windowsではシェルスナップショット作成時にタイムアウトの問題が発生する場合がある既知の問題があります。