2015-07-21 76 views
4

在Unix中使用$ - 有什麼用處。在我的系統中,輸出是

$ echo $- 
himBH 
$ 

himBH是什麼意思?它代表什麼。

在此先感謝...

回答

7

它返回當前shell的標誌。變量$-包含當前在終端中處於活動狀態的外殼標誌。這些標誌決定了你的shell將如何爲你工作。在你的情況,這些標誌的含義如下(請注意,所有這些都是默認值):

  • ^h:短期的「hashall」(讀了「散列全部」),這是告訴Bash 請記住通過查詢您的 PATH找到的命令的位置。

  • :短期的「互動」,這是很好的,因爲這是一個殼 與我互動(進入輸入&找回輸出)1

  • !這是「監視器」的縮寫,它使bash中的作業控制成爲可能(例如,您可以通過bg將作業發送到背景)。

  • :短期的「braceexpand」(讀作「梅開二度擴大」),這可以讓你 使用在bash2的非常有效的括號擴展。

  • ^h:短期的「histexpand」(讀作「歷史[歷史]擴大」),這是 什麼能夠通過作序 其數量有感嘆號POINT3從你的歷史,你要重新運行一個命令。

這些標誌可以通過使用set命令來改變。例如:

set +H 
echo $- 
himB 

刪除H標誌。而-

set -H 
echo $- 
himBH 

恢復它。這就是它,有點令人困惑,但+刪除一個標誌,而-添加一個標誌。


更多信息:

+0

因此,這裏的 'h' 代表hashall。所以它告訴bash通過查詢PATH來記住它找到的命令的位置。所以,如果我禁用'h',那麼會發生什麼。 bash沒有找到PATH並且未能執行命令。這樣對嗎。 – mrg