WSL環境でのコマンド出力取得 - 検証結果

検証日時

2025-11-28

検証方法

  1. ログファイルを使用した出力取得
  2. PYTHONUNBUFFERED環境変数の使用
  3. 作成したスクリプトの動作確認

検証結果

✅ 成功した方法

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の統合制限によるもの

実用的な解決策

推奨方法: ログファイルを使用

  1. コマンド実行時にログファイルを指定
    python3 run_test_with_immediate_output.py pytest tests/ -v --log pytest_output.log
    
  2. ログファイルをCursorで開く
    • Cursorのエクスプローラーで pytest_output.log を開く
    • または、read_file ツールで読み取る
  3. 自動ログ(環境変数)
    AUTO_LOG=1 python3 run_test_with_immediate_output.py pytest tests/
    

代替方法: 直接WSLターミナルで実行

Cursorのrun_terminal_cmdではなく、WSLターミナルで直接実行:

  • リアルタイムで出力を確認できる
  • ログファイルも不要

結論

WSL環境では、Cursorのrun_terminal_cmdで出力を直接確認することはできません。

しかし、以下の方法で実用的に解決できます:

  1. ログファイルを使用 - 最も確実
  2. PYTHONUNBUFFERED環境変数 - バッファリングを無効化
  3. 作成したスクリプト - 自動的にログファイルに保存

推奨ワークフロー:

# コマンド実行(ログファイルに保存)
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内で使用する場合は、必ずログファイルを使用してください。


This site uses Just the Docs, a documentation theme for Jekyll.