単に set -x すると標準エラーに出力されるが、 $BASH_XTRACEFD で出力先のファイルディスクリプタを指定できる。 #!/bin/bash # FD=3 で出力先ファイルを追記モードでオープン TRACE_LOG=${TRACE_LOG-/tmp/xtrace.$$.log} exec 3>>$TRACE_LOG # 上書きしたい場合は演算子を変える # exec 3<>$TRACE_LOG # 出力先を FD=3 に指定 BASH_XTRACEFD=3 # デバッグ出力開始 set -x # # 必要な処理を実行 # # デバッグ出力終了 set +x # 終わったらファイルを閉じる (明示的にやらなくてもスクリプト終了時に閉じる) exec 3>&-