私のzsh起動スクリプトのエラーデバッグ

私のzsh起動スクリプトのエラーデバッグ

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おそらく関数外の拍車ではないでしょうか?

おすすめ記事