2012-04-11 8 views
15

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

私の質問はです。$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 "実行")と考えていますか?

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

乾杯!

+5

デバッグモード(-x)を有効にしてbashコマンドを実行するには、 'bash -x -c your_command'を使用してください。 – Alex

+1

RTFM! j/k/10char – KurzedMetal

+0

簡潔な答えであるAlexに感謝します.bash -x -c lsはあなたが説明したことを行います。ですから、 "$ bash -xファイルが実行可能かどうかを確認するコマンドは"間違っています:)ありがとう! – Khiet

答えて

29

-xオプションは、デバッグモードでBASHシェルを開始します。コマンド/スクリプトの処理方法の詳細をすべて見ることができます。あなたのスクリプトがあなたが期待することをしないといくつかのバグを見つける良い方法です

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

、具体的詳細については、invoking Bashthe set builtin command上の部品、man bashまたはオンラインマニュアルを参照してください:

は組み込みセットで使用される単一文字のオプションのすべてが(設定組み込みを参照)として使用することができますシェルが呼び出されたときのオプション。

-x コマンド、ケースコマンド、selectコマンド、およびコマンドとその引数または関連付けられたワードリストの単純なトレースを、それらが展開されて実行される前に表示します。 PS4変数の値が展開され、結果の値がコマンドと展開された引数の前に出力されます。

+0

Tomasさん、VMのVMにはbashがインストールされていませんが、オンラインのmanページは実際にはすべてそれを言っています; – Khiet

+0

@Khietあなたは大丈夫です。人がいない場合は、 'man bash'と入力してください。最初のリンクは通常マニュアルページです。 – user219882

+0

' bash | grep "\ -x" 'は私に0行を返します...しかしそれは動作します。 –

0
  • bash -x <file>各コマンドのトレースでスクリプト<file><file>現在のユーザの権限を実行したか否か

  • テストを実行する実行。

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

関連する問題