最近、同僚が私にbash -x
を紹介し、echo $foo
ルートを使用せずにbashスクリプトをデバッグした。
$ bash -x hello-world.sh
+ echo 'Hello World'
Hello World
内部的に-bashはこれをどのように実現しますか? man bash
を確認しましたが、インタプリタを呼び出すときに-x
フラグについて言及しているようです(そうではないようです)。私は主に、-x
環境でデバッグされるものとデバッグされないもの、またはその他の問題の概要を探しています。
-x
はxtrace
を-o
オプションでbashに設定するのと同じです。私のbashのマンページから:
各を展開した後、単純なコマンド、forコマンド、caseコマンド、selectコマンド、または算術forコマンドは、PS4の展開された値を表示し、その後にコマンドとその展開された引数または関連するWordリストを表示します。
これには「問題」があるとは思いません。実行する各コマンドを出力します。
(この内部スクリプトまたはインタラクティブシェルセッションでset -x
をオンにしてオンに、set +x
をオフにしてオフにすることもできます。)