echo $?
私のzsh端末はisのようなエラーコードで始まります1
。これは実際には何の問題も起こしませんが、私を迷惑させるだけです。さまざまな起動スクリプトのコマンドが含まれると思いましたが、history
そうではなく、history
ユーザーが入力したコマンドだけが表示されます。
この状況をデバッグする良い方法は何ですか?
ベストアンサー1
起動スクリプトや他のシェルスクリプトの機能を理解するには、set -x
知りたい部分の先頭または前に配置してください。これにより、シェルは実行されるすべてのコマンドを追跡し、各コマンドを実行する前に標準エラーで印刷します。トレースをオフにするには(スクリプトの一部のみをトレースしたい場合(おそらく役に立ちません))、実行しますset -x
。
を実行してトレースモードでzshを起動することもできますzsh -x
。 (たとえば、環境変数を設定する前に依存する場合など、端末エミュレータでzshを直接実行したときにのみ問題が発生した場合、特定のケースで問題が再現されない可能性があります。)
set -x
標準エラーのトレースを印刷します。を実行してファイルにリダイレクトするか、zsh -x 2>zsh.log
一時的に使用できます。
exec 2>zsh.log; set -x
… # stuff you want to trace
set +x; exec 2>/dev/tty
これにより、端末ではなく標準エラーが発生し、一部のプラグインがクラッシュする可能性があります。その場合は、script -c 'zsh -x'
代わりに実行してください。これにより、すべての内容がzshというファイルに書き込まれますが、typescript
それでも端末に接続されます。
ファイルの最後の行にtrue(何も成功しなかったプログラム)を使用してください。 – ウォルトナー
@waltinator 良いアイデアですが、動作しません。
return
おそらく関数外の拍車ではないでしょうか?