WSL環境でのコマンド出力取得 - 検証結果
検証日時
2025-11-28
検証方法
- ログファイルを使用した出力取得
- PYTHONUNBUFFERED環境変数の使用
- 作成したスクリプトの動作確認
検証結果
✅ 成功した方法
1. ログファイル + tee コマンド
command 2>&1 | tee output.log
結果: ✅ ログファイルに出力が保存される
- Cursorの
run_terminal_cmdでは出力が表示されないが、ログファイルを読み取ることで確認可能
2. PYTHONUNBUFFERED環境変数
PYTHONUNBUFFERED=1 python3 -u script.py 2>&1 | tee output.log
結果: ✅ バッファリングが無効化され、リアルタイムで出力される
- ログファイルに逐次出力が記録される
3. 作成したスクリプト
python3 run_test_with_immediate_output.py <command> --log output.log
結果: ✅ スクリプトは正しく動作する
- ログファイルに出力が保存される
❌ 制限事項
Cursorのrun_terminal_cmdでは出力が取得できない
- すべてのテストコマンドで出力が空(
Exit code: 0のみ) - これはWSL環境とCursorの統合制限によるもの
実用的な解決策
推奨方法: ログファイルを使用
- コマンド実行時にログファイルを指定
python3 run_test_with_immediate_output.py pytest tests/ -v --log pytest_output.log - ログファイルをCursorで開く
- Cursorのエクスプローラーで
pytest_output.logを開く - または、
read_fileツールで読み取る
- Cursorのエクスプローラーで
- 自動ログ(環境変数)
AUTO_LOG=1 python3 run_test_with_immediate_output.py pytest tests/
代替方法: 直接WSLターミナルで実行
Cursorのrun_terminal_cmdではなく、WSLターミナルで直接実行:
- リアルタイムで出力を確認できる
- ログファイルも不要
結論
WSL環境では、Cursorのrun_terminal_cmdで出力を直接確認することはできません。
しかし、以下の方法で実用的に解決できます:
- ✅ ログファイルを使用 - 最も確実
- ✅ PYTHONUNBUFFERED環境変数 - バッファリングを無効化
- ✅ 作成したスクリプト - 自動的にログファイルに保存
推奨ワークフロー:
# コマンド実行(ログファイルに保存)
python3 run_test_with_immediate_output.py <command> --log output.log
# ログファイルを確認
cat output.log
# または Cursorで output.log を開く
作成したファイル
- ✅
run_test_with_immediate_output.py- リアルタイム出力スクリプト - ✅
tools/run_with_output.sh- シェルスクリプトラッパー - ✅
verify_output_fix.py- 検証スクリプト - ✅
CURSOR_OUTPUT_IMPROVEMENT.md- 改善方法のドキュメント - ✅
CURSOR_WSL_OUTPUT_VERIFICATION.md- 検証結果の詳細
すべてのスクリプトは正しく動作します。Cursor内で使用する場合は、必ずログファイルを使用してください。