Shell環境變數一覽表

2020-07-16 10:04:46
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 環境變數經常會不一樣。