40

シェルスクリプトのステートメントのように$bash -x、ファイルが実行可能かどうか(またはksh -xコマンドなど)を確認するためにクライアントがコマンドを実行しているのを見ました。-xif

私の質問は:コマンドは$bash -xをするのですか?

私の解釈は、現在のシェル内の新しいbashシェルでコマンドを開始し、同じ環境変数を継承し、同じユーザーによって実行されることでした。

面白いのは、私にはできるができないこと$lsです$bash -x ls

(AIX 6の場合) /usr/bin/ls: /usr/bin/ls: cannot execute binary file

エラーがなぜあるのかは私には謎です-それが特権によるものであると推測することは、上記の私の仮定が正しくないことを意味します。

また、私は信じ$bash ls$bash -x ls同じことです(-x「実行」の場合)?

コメントをいただければ幸いです。

乾杯!

4

2 に答える 2

61

この-xオプションは、トレースモードでBASHシェルを開始します。コマンド/スクリプトがどのように処理されるかについてのすべての詳細を見ることができます。スクリプトが期待どおりに機能しない場合は、いくつかのバグを見つけるのに適した方法です。

そして、Alexがコメントで言ったように、BASHでコマンドを実行するには、の-cようなオプションを使用する必要がありますbash -x -c ls

詳細についてはman bash、またはオンラインマニュアル、特にBashset呼び出しに関する部分と組み込みコマンドを参照してください。

ビルトインで使用されるすべての単一文字オプションset(「ビルトインの設定」を参照)は、シェルが呼び出されるときにオプションとして使用できます。

-x

for単純なコマンド、コマンド、caseコマンド、selectコマンド、算術forコマンド、およびそれらの引数または関連する単語リストのトレースを、展開されてから実行される前に印刷します。変数の値PS4が展開され、結果の値がコマンドとその展開された引数の前に出力されます。

于 2012-04-11T13:43:24.403 に答える
8
  • bash -x <file><file>実行された各コマンドのトレースを使用してスクリプトを実行します

  • test -x <file><file>現在のユーザーの実行権限があるかどうかをテストします。

あなたはこれら2つを混乱させたようです。

于 2016-07-11T16:59:27.323 に答える