Bashには、 ""オプションをオンにすると-x
(シンボル名はだと思いますxtrace
)、Bashが実行されたときにスクリプトの各行を出力する便利な機能があります。
私はこの動作を達成する2つの方法を知っています。
- スクリプト自体では、次のように言います。
set -x
- コマンドラインから
-x
Bashにオプションを渡します。
環境変数でこのオプションを有効にする方法はありますか?
(特に Bash を直接呼び出すわけではないため、オプションを渡すことができず、興味のあるスクリプトが圧縮されたアーカイブの内部にあるのであまり再構築したくありません。環境変数を設定できれば、プロセス継承かもしれません...)
マンページにはについての内容が記載されていますが
BASHOPTS
、私が試したときにBashは読み取り専用だと言いました。 (マンページにこの内容を言及していないことに感謝します。)今回も
SHELLOPTS
読み取り専用のようです。あなたは選ぶことができますどのFDと一緒に使用されます
BASH_XTRACEFD
。ただし、まずトレースをオンにする必要があります。
答え1
env
フラグを無視するために使用されますreadonly
。
env SHELLOPTS=xtrace ./yourscript
または、親シェルにいる場合は、環境にコピーしてサブシェルにコピーすることもできます(ありがとうset -x
。export SHELLOPTS
ジョー・カサドンテこのため):
set -x # set xtrace flag
export SHELLOPTS # copy all options, including xtrace flag, to environment
./yourscript