Bash Shell 還使用了許多環境變數。雖然環境變數不是命令,但它們通常會影響 Shell 命令的執行,所以了解這些 Shell 環境變數很重要。下表列出了 Bash Shell 中可用的預設環境變數。
Bash Shell 環境變數
變數 |
說明 |
* |
含有所有命令列引數(以單個文字值的形式) |
@ |
含有所有命令列引數(以多個文字值的形式) |
# |
命令列引數數目 |
? |
最近使用的前台進程的退出狀態碼 |
- |
當前命令列選項標記 |
$ |
當前shell的進程 ID (PID) |
! |
最近執行的後台進程的 PID |
0 |
命令列中使用的命令名稱 |
_ |
shell 的絕對路徑名 |
BASH |
用來呼叫 shell 的完整檔名 |
BASHOPTS |
允許冒號分隔列表形式的 Shell 選項 |
BASHPID |
當前 bash shell 的進程 ID |
BASH_ALIASED |
含有當前所用別名的陣列 |
BASH_ARGC |
當前子函數中的引數數量 |
BASH_ARGV |
含有所有指定命令列引數的陣列 |
BASH_CMDS |
含有命令的內部雜湊表的陣列 |
BASH_COMMAND |
當前正在被執行的命令名 |
BASH_ENV |
如果設定了的話,每個 bash 指令碼都會嘗試在執行前執行由該變數定義的起始檔案 |
BASH_EXECUTION_STRING |
在 -c 命令列選項中用到的命令 |
BASH_LINENO |
含有指令碼中每個命令的行號的陣列 |
BASH_REMATCH |
含有與指定的正規表示式匹配的文字元素的陣列 |
BASH_SOURCE |
含有 shell 中已宣告函數所在原始檔名的陣列 |
BASH_SUBSHELL |
當前 shell 生成的子 shell 數目 |
BASH_VERS INFO |
含有當前 bash shell 範例的主版本號和次版本號的陣列 |
BASH_VERS ION |
當前 bash shell 範例的版本號 |
BASH_XTRACEFD |
當設定一個有效的檔案描述符整數時,跟蹤輸出生成,並與診斷和錯誤資訊分離開檔案描述符必須設定 -x 啟動 |
COLUMNS |
含有當前 bash shell 範例使用的終端的寬度 |
COMP_CWORD |
含有變數 COMP_WORDS 的索引直,COMP_WORDS 包含當前游標所在的位置 |
COMP_KEY |
呼叫補全功能的按鍵 |
COMP_LINE |
當前命令列 |
COMP_POINT |
當前游標位置相對乾當前命令起始位置的索引 |
COMP_TYPE |
補全型別所對應的整數值 |
COMP_WORDBREAKS |
在進行單詞補全時閈作單詞分隔符的一組字元 |
COMP_WORDS |
含有當前命令列上所有單詞的陣列 |
COMPREPLY |
含有由 shell 函數生成的可能補全碼的陣列 |
COPROC |
含有若干匿名協程 I/O 的檔案描述符的陣列 |
DIRSTACK |
含有目錄棧當前內容的陣列 |
EMACS |
如果設定了該環境變數,則 shell 認為其使用的是 emacs shell 緩衝區,同時禁止行編輯功能 |
ENV |
當 shell 以 POSIX 模式呼叫時,每個 bash 指令碼在執行之前都會執行由該環境變數所定義的起始檔案 |
EUID |
當前使用者的有效使用者 ID(數位形式) |
FCEDIT |
fc 命令使用的預設編輯器 |
FIGNORE |
以冒號分隔的字尾名列表,在檔名補全時會被忽略 |
FUNCNAME |
當前執行的 shell 函數的名稱 |
FUNCNEST |
巢狀函數的最髙層級 |
GLOBIGNORE |
以冒號分隔的模式列表,定義了檔名展開時要忽略的檔名集合 |
GROUPS |
含有當前使用者屬組的陣列 |
histchars |
控制歷史記錄展開的字元(最多可有3個) |
HISTCMD |
當前命令在歷史記錄中的編號 |
HISTCONTROL |
控制哪些命令留在歷史記錄列表中 |
HISTFILE |
儲存 shell 歷史記錄列表的檔名(預設是 .bash_history) |
HISTFILESIZE |
儲存在歷史檔案中的最大行數 |
HISTIGNORE |
以冒號分隔的模式列表,用來決定哪些命令不存進歷史檔案 |
HISTSIZE |
最多在歷史檔案中儲存多少條命令 |
HISTIMEFORMAT |
設定後,決定歷史檔案條目的時間戳的格式字串 |
HOSTFILE |
含有 shell 在補全主機名時讀取的檔案的名稱 |
HOSTNAME |
當前主機的名稱 |
HOSTTYPE |
當前執行 bash shell 的機器 |
IGNOREEOF |
shell 在退出前必須收到連續的 EOF 字元的數量。如果這個值不存在,預設是 1 |
INPUTRC |
readline 初始化檔名(預設是 .inputrc) |
LANG |
shell 的語言環境分類 |
LC_ALL |
定義一個語言環境分類,它會覆蓋 LANG 變數 |
LC_COLLATE |
設定對字串值排序時用的對照表順序 |
LC_CTYPE |
決定在進行檔名擴充套件和模式匹配時,如何解釋其中的字元 |
LC_MESSAGES |
決定解釋前置美元符($)的雙引號字串的語言環境設定 |
LC_NUMERIC |
決定格式化數位時的所使用的語言環境設定 |
LINENO |
指令碼中當前執行程式碼的行號 |
LINES |
定義了終端上可見的行數 |
MACHTYPE |
用“cpu-公司-系統”格式定義的系統型別 |
MAILCHECK |
Shell 多久檢視一次新郵件(以秒為單位,預設值是 60) |
MAPFILE |
含有 mapfile 命令所讀入文字的陣列,當沒有給出變數名的時候,使用該環境變數 |
OLDPWD |
shell 之前的工作目錄 |
OPTERR |
設定為 1 時,bash shell 會顯示 getopts 命令產生的錯誤 |
OSTYPE |
定義了 shell 執行的作業系統 |
PIPESTATUS |
含有前台進程退出狀態碼的陣列 |
POSIXLY_CORRECT |
如果設定了該環境變數,bash 會以 POSIX 模式啟動 |
PPID |
bash shell 父進程的 PID |
PROMPT_COMMAND |
如果設定該環境變數,在顯示命令列主提示符之前會執行這條命令 |
PS1 |
主命令列提示符字串 |
PS2 |
次命令列提示符字串 |
PS3 |
select 命令的提示符 |
PS4 |
如果使用了 bash 的 -x 選項,在命令列顯示之前顯示的提示符 |
PWD |
當前工作目錄 |
RANDOM |
返回一個 0~32 767 的亂數,對其賦值可作為亂數生成器的種子 |
READLINE_LINE |
儲存了 readline 行緩衝區中的內容 |
READLINE_POINT |
當前 readline 行緩衝區的插入點位置 |
REPLY |
read 命令的預設變數 |
SECONDS |
自 shell 啟動到現在的秒數,對其賦值將會重置計時器 |
SHELL |
shell 的全路徑名 |
SHELLOPTS |
已啟用 bash shell 選項列表,由冒號分隔 |
SHLVL |
表明 shell 層級,每次啟動一個新的 bash shell 時計數加 1 |
TIMEFORMAT |
指定了 shell 顯示的時間值的格式 |
TMOUT |
select 和 read 命令在沒輸入的情況下等待多久(以秒為單位)。預設值為零,表示無限長 |
TMPDIR |
如果設定成目錄名,shell 會將其作為臨時檔案目錄 |
UID |
當前使用者的真實使用者 ID (數位形式) |
可以用 set 內建命令來顯示這些環境變數。對於不同的 Linux 發行版,開機時設定的預設 shell 環境變數經常會不一樣。