5.2 Bash變數
下面這些變數在Bash中設定或者使用,其他shell一般不會處理這些變數。
Bash使用的一些變數也在其他章節介紹:例如,控製作業的工具使用的變數,請參看‘作業控制變數’。
BASH
執行當前Bash執行個體的全路徑名。
BASHOPTS
冒號分隔的已啟用的shell選項列表。列表中的每個單詞都是內建命令shopt -s 的有效參數(參看‘shopt內建命令’)。BASHOPTS中出現的選項,都是執行shopt命令時,顯示狀態為‘on’的那些。當Bash啟動時,如果這個變數在環境中,在讀入開機檔案前,列表中的每個shell選項都會被啟用。該變數是唯讀。
BASHPID
擴充為當前Bash進程的進程ID。在某些情況下和$$的結果不同,例如不需要Bash重新初始化的子shell。
BASH_ALIASES
一個關聯陣列變數,其成員對應內部別名列表,該列表由內建命令alias維護。(參看‘Bourne Shell內建命令’)。增加到這個數組的元素會出現在別名列表中,刪除數組元素,則對應地從別名列表中移除了相應的別名。
BASH_ARGC
一個陣列變數,其值為當前bash執行呼叫堆疊中的每個幀中的參數個數。當前子程式(使用 . 或者source執行的shell函數或者指令碼)的參數個數位於堆棧的頂部。當執行一個子程式時,傳入的參數個數被壓入BASH_ARGC頂部。shell僅僅在擴充偵錯模式時才設定這個變數。(請參看'shopt內建'章節,對extdebug選項的描述)
BASH_ARGV
是一個陣列變數,包含當前bash執行呼叫堆疊中的所有參數。最後一個子程式調用的最後一個參數在堆棧的頂部;初始呼叫的第一個參數在底部。一個子程式被執行時,它的參數被壓入BASH_ARGV。shell僅在擴充偵錯模式時設定BASH_ARGV,(見shopt內建命令關 於extdebug選項的描述)。
BASH_CMDS
是一個陣列變數,包含的成員對應於由hash內建命令維護的那些命令的內部hash表(見bourne shell內建命令)。增加到這個數組的元素會出現在hash表中,在這個數組中刪除的元素也從hash表中被刪除。
BASH_COMMAND
當前正在執行的或者正要執行的命令,除非shell因為陷阱正在執行一條命令,在這種情況下是發生陷阱時正在執行的命令。
BASH_ENV
如果這個變數被設定,當Bash被調用去執行一個shell指令碼時,它的值被擴充,並在指令碼執行之前作為開機檔案讀取,見Bash開機檔案。
BASH_EXECUTION_STRING
-c調用選項的命令參數。
BASH_LINENO
是一個陣列變數,它的成員是源檔案中的行號,每個行號對應被調用的FUNCNAME的成員。${BASH_LINENO[$i]} 是源檔案 (${BASH_SOURCE[$i+1]})中,${FUNCNAME[$i]}被調用時的行號,(或者,如果在另一個shell函數中引用,是${BASH_LINENO[$i-1]})。使用LINENO擷取當前的行號。
BASH_REMATCH
是一個陣列變數,它的成員是使用 ‘=~’ 二進位操作符作用於 [[ 條件命令(見條件構造)的結果。索引0的元素是匹配整個Regex的那部分字串。索引n的元素是匹配第n個括弧子運算式的那部分字串。此變數是唯讀。
BASH_SOURCE
是一個陣列變數,它的成員是源檔案名稱,其中定義的的shell函數名對應於FUNCNAME陣列變數。shell函數${FUNCNAME[$i]}在${BASH_SOURCE[$i]}檔案中定義,並且從${BASH_SOURCE[$i+1]}調用。
BASH_SUBSHELL
每產生一個子shell或者子shell環境時,增加1。初始值是0。
BASH_VERSINFO
是一個唯讀陣列變數(見數組),它的成員儲存著當前Bash執行個體的版本資訊。數群組成員如下:
BASH_VERSINFO[0]
主要的版本號碼(發行版)。
BASH_VERSINFO[1]
次要的版本號碼(發行版)。
BASH_VERSINFO[2]
補丁號。
BASH_VERSINFO[3]
構造版本。
BASH_VERSINFO[4]
發行版狀態(例如,beta1)。
BASH_VERSINFO[5]
MACHTYPE的值。
BASH_VERSION
當前Bash執行個體的版本號碼。
BASH_XTRACEFD
如果設定為對應於一個有效檔案描述符的一個整數,當‘set -x’ 啟用時,Bash將把產生的跟蹤輸出到那個檔案描述符。這樣就可以把跟蹤輸出內容中的診斷和錯誤資訊分開。當BASH_XTRACEFD被取消時,或者設定到一個新值時,該檔案描述符被關閉。取消BASH_XTRACEFD或著設定為空白串,會把跟蹤輸出發送到標準錯誤。注意,設定BASH_XTRACEFD到2(標準錯誤檔案描述符),然後取消設定,會造成標準輸出被關閉。
COLUMNS
當列印挑選清單時,由select命令用來決定終端寬度。當收到SIGWINCH訊號時,自動化佈建。
COMP_CWORD
是一個索引,包含當前游標位置的字${COMP_WORDS}。這個變數僅在由可程式化完成工具調用shell函數時可用。(見可程式化完成)
COMP_LINE
當前命令列。這個變數僅在shell函數和外部命令是由可程式化完成工具調用的情況下可用。(見可程式化完成)
COMP_POINT
當前命令開始時的當前游標位置。如果當前游標位置在當前命令的尾部,變數值等於${#COMP_LINE}。這個變數僅在shell函數和外部命令是由可程式化完成工具調用的情況下可用。(見可程式化完成)
COMP_TYPE
設定為一個整數值,對應於試圖完成的類型(該完成將調用一個完成函數):對於一般完成是TAB,對於後續tabs之後的列表完成是‘?’,對於部分字完成上的列表選擇是‘!’,如果字未被修改則是列表完成,或者,對於菜單完成是 ‘%’。這個變數僅在shell函數和外部命令是由可程式化完成工具調用的情況下可用。(見可程式化完成)
COMP_KEY
用來調用當前完成函數的鍵,(或者鍵序列的最後的鍵)。
COMP_WORDBREAKS
一組字元,執行字完成時,被Readline庫當作字分割符。如果COMP_WORDBREAKS取消設定,則它失去它的特殊屬性,即使它隨後被重設了。
COMP_WORDS
是一個陣列變數,由當前命令列中的獨立字組成。該行按Readline分割方式,使用COMP_WORDBREAKS分割。這個變數僅在shell函數和外部命令是由可程式化完成工具調用的情況下可用。(見可程式化完成)
COMPREPLY
是一個陣列變數,Bash從中讀取由shell函數和可程式化完成工具調用產生的可能的完成。(見可程式化完成)
COPROC
是一個陣列變數,用來儲存用於輸出和輸入的未命名coprocess。(見協同進程)
DIRSTACK
是一個陣列變數,包含目錄堆棧的當前內容。堆棧中出現的目錄,按照dirs內建命令的顯示結果順序顯示。給這個變數的成員賦值,可以用來修改堆棧中的目錄,但是必須使用pushd和popd內建命令來增加和刪除目錄。對這個變數的賦值,不會改變當前的目錄。如果DIRSTACK取消設定,則它失去它的特殊屬性,即使它隨後被重設了。