2012-04-11 902 views
15

我看到一個客戶端在執行$bash -x命令,查看該文件是否可執行(或ksh -x命令等),如shell腳本的if語句中的-xbash -x命令

我的問題是:什麼$bash -x命令嗎?

我的解釋是在當前shell的新bash shell中啓動一個命令,繼承相同的環境變量並由同一個用戶執行。

有趣的是,我可以做$ls但不$bash -x ls,這給:

(下AIX 6) /usr/bin/ls: /usr/bin/ls: cannot execute binary file

這對我來說是一個謎,爲什麼錯誤 - 猜這是因爲這意味着我上面的假設是不正確的。

另外,我相信$bash ls$bash -x ls是一樣的東西(-x for「execute」)?

任何意見是極大的讚賞。

乾杯!

+5

要啓用調試模式(-x)來執行bash命令,請使用'bash -x -c your_command' – Alex 2012-04-11 13:44:02

+1

RTFM! j/k/10char – KurzedMetal 2012-04-11 13:45:36

+0

感謝Alex的簡潔回答,bash -x -c ls完成你所描述的任務。因此,「$ bash -x命令查看文件是否可執行」是錯誤:)然後感謝! – Khiet 2012-04-11 13:55:18

回答

29

-x選項啓動在調試模式是bash shell。你可以看到你的命令/腳本處理的所有細節。這是找到了一些錯誤,如果你的腳本不,你會希望

什麼,就像亞歷克斯在上面的評論說的好方法。要運行BASH中的一個命令,你必須使用-c選項像bash -x -c ls

man bash或在線手冊,特別是關於invoking Bashthe set builtin command以獲取更多信息的部分:

所有的帶有內置的集合(見set內建)中使用的單字符選項可以用作當shell被調用時的選項。

-x 打印一條簡單的命令,命令,個案命令,選擇命令和算術命令以及它們的參數或相關單詞列表在執行之後展開。 PS4變量的值被展開,結果值被打印在命令及其擴展參數之前。

+0

感謝Tomas,man for bash沒有安裝在我們的虛擬機上,但在線手冊確實說明了一切;(謝謝爲大家提供這樣一個快速的答案,非常感謝! – Khiet 2012-04-11 13:58:36

+0

@Khiet不客氣,如果你沒有安裝任何人,請在Google中輸入「man bash」,第一個鏈接通常是手冊頁:) – user219882 2012-04-11 14:00:03

+0

'bash | grep「\ -x」'返回我零線......但它的工作原理。 – 2014-04-29 23:05:36

0
  • bash -x <file>運行腳本<file>與每個命令的執行跟蹤

  • 測試是否已<file>爲當前用戶執行權限。

看來你已經混淆了這兩個。