私はそれが何をしてbash -x
いるのか知っていますが、それは何をしますかbash +x
?
Google 検索では結果が出ておらず、ドキュメントにはこれに関する言及はありません。
ベストアンサー1
-x
、それは同じ-o xtrace
作るオプションxtrace
。
+x
、それは同じ+o xtrace
障害を負うそれ。
これらのオプションをインタプリタに渡して起動時に有効/無効にするか(set
/// set -o xtrace
)に渡して、set -x
実行時に有効/無効にすることができます。set +o xtrace
set +x
ただし、オプションに関しては、オプションxtrace
は次のとおりです。いいえ$SHELLOPTS
デフォルトでは有効になっており、bashはenv変数またはパスが格納されている初期化ファイルの前にコマンドラインオプションを処理するため、$BASH_ENV
このbash
オプションを+x
呼び出すことは意味がありません。
$ cat env
set -o xtrace
$ BASH_ENV=env bash +x -c 'echo foo'
+ echo foo
foo
$ env SHELLOPTS=xtrace bash +x -c 'echo foo'
+ echo foo
foo
どちらの場合も、設定を通過またはキャンセルする+x
方法はありません。set -o xtrace
$BASH_ENV
$SHELLOPTS
-x
or以降にのみ機能します-o xtrace
。
$ bash -x +x -c 'echo foo'
foo
したがって(可能性なし)がある場合、bash +x ./script.sh
1は意味があるかもしれません。alias bash='bash -x'
しかし、次のようにすることができます。
$ bash +B -c 'echo {a,b}'
{a,b}
braceexpand
このオプションを無効にするにははいデフォルトでは有効になっています。
またはこれを行うこともできます:
$ env SHELLOPTS=xtrace bash -c 'set +x; echo foo'
+ set +x
foo
障害を負うxtrace
後ろに処理中に有効になります$SHELLOPTS
。
1現在のディレクトリに見つからない場合は、検索を./
防ぐ必要があります。bash
script.sh
$PATH