Skip to content

原文(日本語に翻訳)

コマンドが自身の作業ディレクトリを削除した後、シェルコマンドが永続的に失敗し続けていた問題を修正 (anthropics/claude-code#26136)

原文(英語)

Fixed shell commands permanently failing after a command deletes its own working directory (anthropics/claude-code#26136)

概要

あるコマンドが実行中に自身のカレントワーキングディレクトリ(cwd)を削除した場合、それ以降のシェルコマンドがすべて失敗し続けるという問題が修正されました。この問題はビルドスクリプトやクリーンアップスクリプトで一時ディレクトリを削除するような場合に発生していました。修正により、作業ディレクトリが消失した後も安全にシェルコマンドを実行できるようになります。

基本的な使い方

bash
# 修正前: 以下のようなシナリオで問題が発生していた
mkdir /tmp/work_dir
cd /tmp/work_dir
rm -rf /tmp/work_dir  # 自身のcwdを削除
ls  # この後のコマンドが永続的に失敗していた

# 修正後: cwdが削除されても後続のコマンドは正常に動作する

実践例

ビルドスクリプトでの一時ディレクトリ削除

bash
#!/bin/bash
# ビルド後に一時ディレクトリを削除するスクリプト
BUILD_DIR="/tmp/build_$(date +%s)"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"

# ビルド処理
echo "ビルド中..."
# ... ビルドコマンド ...

# 一時ディレクトリのクリーンアップ
cd /
rm -rf "$BUILD_DIR"

# 修正後: この後のコマンドも正常に動作する
echo "ビルド完了"
ls ~/project  # 正常に実行される

テスト用一時環境のクリーンアップ

bash
# テスト後に作業ディレクトリを削除するケース
TEST_DIR=$(mktemp -d)
cd "$TEST_DIR"

# テスト実行
run_tests

# クリーンアップ(cwdを削除)
cd ..
rmdir "$TEST_DIR"

# 修正後: 後続のgitコマンドなども正常に動作する
git status  # 問題なく動作

Claude Codeでの自動クリーンアップシナリオ

bash
# Claude Codeがビルド・テスト・クリーンアップを自動実行する場合
# 「ビルドして一時ファイルを削除してください」と指示した際に
# 内部でcwdが削除されても、Claudeはその後のコマンドを継続実行できる
claude -p "プロジェクトをビルドし、一時ファイルをクリーンアップしてください"

注意点

  • この修正はv2.1.47以降で有効です
  • 作業ディレクトリが削除された場合、Claude Codeは自動的に適切なフォールバックディレクトリに移動します
  • コマンドが自分自身のcwdを削除するのは特殊なケースですが、ビルドシステムや自動化スクリプトでは発生し得るシナリオです
  • 修正前は、この状態になるとClaudeを再起動するまですべてのシェルコマンドが失敗し続けていました

関連情報