set -x
ソースコードを変更せずに(例えば、shebangの変更や先頭に挿入するなど)、デバッグ目的でシェルスクリプトを追跡したいと思います。これはdpkg postinstスクリプトなので、実際にはシェルから直接呼び出すことはありません。
これに関する環境変数を見つけるためにマニュアルページを検索しましたが、dash
何も見つかりませんでした。
これを行う方法はありますか?
答え1
スーパーユーザーアクセス権があるため/bin/sh
。
まずラッパーを作成します。ホームディレクトリにmysh
次のコンテンツで名前が付けられたファイルを作成します。
#!/bin/dash
exec /bin/dash -x "$@"
実行可能にしてください。
$ chmod +x ~/mysh
その後、変更してください/bin/sh
。まず、それが指す場所に注意してください。
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 Jan 12 17:42 /bin/sh -> /bin/dash
その後、免責事項に変更します。 (警告:システムが機能しない場合は数マイクロ秒かかります/bin/sh
。)
$ sudo ln -sf ~/mysh /bin/sh
仕事が終わったら、もう一度やり直してください。
$ sudo ln -sf /bin/dash /bin/sh
頑張ってください!
答え2
-x
呼び出しコマンド自体でこのフラグを使用できます。
sh -x ./script