Linux 變量的使用
目錄
- 1. Shell 腳本規範
- 2. Shell 腳本執行
- 3. Shell 腳本變量
- 3.1 環境變量
- 3.1.1 自定義環境變量
- 3.1.2 顯示與取消環境變量
- 3.1.3 環境變量初始化與對應文件的生效順序
- 3.2 普通變量
- 3.2.1 定義本地變量
- 3.2.2 shell 調用變量
- 3.2.3 grep 調用變量
- 3.2.4 awk 調用變量
- 3.3 特殊變量
- 3.4 變量子串
- 3.1 環境變量
- 4. Shell 運算符
- x.-系統變量列表
1. Shell 腳本規範
一個規範的 Shell 腳本在第一行會指出由哪個程序(解釋器)來執行腳本中的內容,這一行內容在 Linux bash 的編程一般為:
#! /bin/bash
# 或者, 不過註意,要在255個字符以內!
#! /bin/sh
在執行bash腳本的時候,內核會根據“#!”後的解釋器來確定該用哪個程序解釋這個腳本中的內容,不過註意。這一行必須位於每個腳本頂端的第一行
類似這種的有很多,例如:
#! /bin/sh
#! /bin/bash
#! /usr/bin/awk
#! /bin/sed
#! /usr/bin/tcl
#! /usr/bin/expect
#! /usr/bin/perl
#! /usr/bin/env python
如果在腳本開頭的第一行不指定解釋器,那麽就要用對應的解釋器來執行腳本,這樣才能確保腳本正確執行,例如:
如果是 Shell 腳本,就用bash test.sh
執行
如果是Python 腳本,就用 python test.py
執行
如果是expect 腳本,就用 expect test.py
執行
2. Shell 腳本執行
當 Shell 腳本運行時,它會先查找系統環境變量 ENV
,該變量指定了環境文件(加載順序通常是 /etc/profile
、~/.bash_profile
、~/.bashrc
、/etc/bashrc
等),在加載了上述環境變量文件後,Shell 就開始執行 Shell 腳本中的內容。
Shell 腳本是從上到下,從左至右依次執行每一行的命令及語句的,既執行完了一個命令後在執行下一個,如果在 Shell 腳本中遇到子腳本(即腳本嵌套)時,就會先執行子腳本的內容,完成後再返回父腳本繼續執行父腳本內後續的命令及語句,
通常情況下,在執行 Shell 腳本時,會向系統內核請求啟動一個新的進程,以便在該進程中執行腳本的命令及子Shell腳本,基本流程如下圖所示。
設置 Linux 的 crond 任務時,最好能在定時任務腳本中重新定義系統環境變量,否則,一些系統環境變量將不會被加載,這個問題需要註意!
3. Shell 腳本變量
存放一個值的空間即為變量,
默認情況下,在 bash shell 中是不會區分變量類型的,例如:常見的變量類型為數字、字符串、小數等,這和其他強類型語言(例如:Java/C語言)是有區別的,當然,如果需要指定Shell變量的類型,也可以使用 declare
顯示定義變量的類型,但在一般情況下沒有這個需求,Shell 開發者在開發腳本時需要自行註意 Shell 腳本中變量的類型。
變量可分為兩類:環境變量(全局變量)和普通變量(局部變量)
環境變量也可稱為全局變量,可以在創建它們的Shell 及其派生出來的任意子進程 Shell 中使用,環境變量又可分為自定義環境變量和 bash 內置的環境變量。
普通變量也可稱為局部變量,只能在創建它們的Shell函數或Shell腳本中使用,普通變量一般由開發者在開發腳本程序時創建。
3.1 環境變量
環境變量一般是指用 expirt 內置命令導出的變量,用於定義 Shell 的運行環境,保證 Shell 命令的正確執行,Shell 通過環境變量來確定登錄用戶名、命令路徑、終端類型、登錄目錄等,所有的環境變量都是系統全局變量,可用於所有子進程中,這包括編輯器、Shell 腳本和各類應用。
環境變量可以在命令行中設置和創建,但用戶退出命令時這些變量值就會丟失,因此,如果希望永久保存環境變量,可在用戶家目錄下的.bash_profile
或 .bashrc
(非用戶登錄模式特有,例如遠程 SSH)文件中,或者全局配置/etc/bashrc
(非用戶登錄模式特有,例如遠程 SSH)或 /etc/profile
文件中定義,在將環境變量放入上述的文件中後,每次用戶登錄時這些變量都將被初始化。
按照系統規範,所有環境變量的名字均采用大寫形式,在將環境變量應用於用戶進程程序之前,都應該用 expirt 命令導出定義,例如:正確的環境變量定義方法為 exprot OLDGIRL=1
有一些環境變量,比如 HOME、PATH、SHELL、UID、USER 等,在用戶登錄之前就已經被 /bin/login
程序設置好了,通常環境變量被定義保存在用戶家目錄下的.bash_profile
文件或全局的配置文件/etc/profile
中。
在查看設置的變量時,有3個命令可以顯示變量的值:set、env 和 declare(替代早期 typeset)set 命令輸出所有的變量,包括全局變量和局部變量,env 命令只顯示全局變量,declare 命令輸出所有的變量、函數、整數和已經導出的變量,set -o 命令顯示 bash Shell 的所有參數配置信息
系統變量表見系統環境變量表
3.1.1 自定義環境變量
(1)設置環境變量
如果想要設置環境變量,就要在給變量賦值之後或在設置變量時使用 export 命令,另外,除了 export 命令。帶 -x 選項的 declare 內置命令也可以完成同樣的功能(註意:此處不要再前面加 $)
export 命令和 declare 命令的格式如下:
export 變量名=value
變量名=value ; export 變量名
declare -x 變量名=value
例如:
[root@www ~]$ export NAME=oldboy
[root@www ~]$ NAME=oldboy ; export NAME
[root@www ~]$ declare -x NAME=oldboy
(2)設置環境變量(永久生效)
用戶的環境變量配置:
[root@www ~]$ ls /root/.bashrc # 推薦再此文件中優先設置
/root/.bashrc
[root@www ~]$ ls /root/.bash_profile
/root/.bash_profile
全局的環境變量配置
[root@www ~]$ /etc/profile
[root@www ~]$ /etc/bashrc
[root@www ~]$ /etc/profile.d/
若要在登陸後初始化或顯示加載內容,則把腳本文件放在 /etc/profile.d/
下即可(無需加載執行權限)
(3)設置登錄提示的兩種方式
第一種是在/etc/motd
裏增加提示的字符串,如下:
[root@www ~]$ cat /etc/motd
welcome to Linux.
第二種是在/etc/profile.d/
下面增加如下腳本:
[root@www ~]$ cat /etc/profile.d/login_info.sh
echo "welcome to Linux."
以下是在生產場景下(在Java環境中),自定義環境變量的示例。
export JAVA_HOME=/application/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export RESIN=/applaction/resin
提示
上述的環境變量設置通常放在
/etc/profile
全局環境變量裏,如果是寫Java的腳本,那麽最好是把上述 Java 環境配置放入腳本內重新定義,特別是作為定時任務執行的腳本。
3.1.2 顯示與取消環境變量
(1)通過 echo 或 printf 打印環境變量
[root@www ~]$ echo $HOME
/root
[root@www ~]$ echo $UID
0
[root@www ~]$ echo $PWD
/root
[root@www ~]$ echo $SHELL
/bin/bash
[root@www ~]$ echo $USER
root
[root@www ~]$ printf "$HOME\n"
/root
提示
在寫Shell 腳本時可以直接使用系統默認的環境變量,一般情況下是不需要重新定義的,在使用定時任務等執行 Shell 腳本時建議在腳本中重新定義。
(2)用 env 或 set 顯示默認的環境變量
[root@www ~]$ env
XDG_SESSION_ID=17
HOSTNAME=www.oliven.com
TERM=xterm
...
[root@www ~]$ set
BASH=/bin/bash
...
[root@www ~]$ declare | head
BASH=/bin/bash
...
(3)用 unset 消除本地變量和環境變量
[root@www ~]$ echo $USER
root
[root@www ~]$ unset USER
[root@www ~]$ echo $USER
[root@www ~]$
3.1.3 環境變量初始化與對應文件的生效順序
在登錄Linux系統並啟動一個 bash shell 時,默認情況下 bash 會在若幹個文件中查找環境變量的設置,這些文件可統稱為系統環境文件,bash 檢查的環境變量文件的情況取決於系統運行 Shell 的方式,系統運行 Shell 的方式有 3 種。
(1)通過系統用戶登錄後默認運行的 Shell
(2)非登錄交互式運行 Shell
(3)執行腳本運行非交互是 Shell
當用戶登錄 Linux 系統時,Shell 會作為登錄 Shell 啟動,此時的登錄 Shell 加載環境變量的順序如上圖。
用戶登錄系統後首先會加載 /etc/profile
全局環境變量文件,這是 Linux 系統上默認的 Shell 主環境變量文件,系統上每個用戶登錄都會加載這個文件。
當加載完 /etc/profile
文件後,才會執行 /etc/profile.d/
目錄下的腳本文件,這個目錄下的腳本文件由很多,例如:系統的字符集設置(/etc/sysconfig/i18n
)等,以便用戶登錄後即可運行腳本
之後開始運行 $HOME/.bash_profile
(用戶環境變量文件),在這個文件中,又會去找 $HOME/.bashrc
(用戶環境變量文件),如果有,則執行,如果沒有,則不執行,在$HOME/.bashrc
文件中又會去找/etc/bashrc
(全局環境變量文件),如果有,則執行,如果沒有,則不執行。
如果用戶的Shell 不是登錄時啟動的(比如手動敲下 bash 時啟動或者其他不需要輸入密碼的登錄及遠程 SSH 連接情況)那麽這種非登錄 Shell 只會加載 $HOME/.bashrc
(用戶環境變量文件),並會去找 /etc/bashrc
(全局環境變量文件),因此如果希望在非登錄 Shell 下也可讀到設置的環境變量等內容,就需要將變量設定寫入 $HOME/.bashrc
或者 /etc/bashrc
,而不是 $HOME/.bash_profile
或/etc/profile
。
3.2 普通變量
3.2.1 定義本地變量
變量的賦值,一般有五種寫法:
name=value
name1=‘value‘
name_2="value"
_name_3=`cmd`
_na_me_4=$(cmd)
變量名一般是由字母、數字、下劃線組成的,可以以字母或下劃線開頭,
符號 | 作用 |
---|---|
無引號, | |
‘ | 單引號,輸出時,將單引號內的所有內容都原樣輸出,這稱為強引用 |
" | 雙引號,輸出雙引號內的所有內容,如果內容中有變量,特殊轉義符等,會先把變量,轉移符等解析出結果,然後再輸出最終內容,這成為強引用 |
` | 反引號,一般用於引用命令,執行的時候命令會被執行,與$()作用相同, |
$() | 與`作用相同 |
3.2.2 shell 調用變量
要想調用變量,方法是:
[root@www ~]$ echo $name
[root@www ~]$ printf $name
3.2.3 grep 調用變量
[root@www ~]$ cat grep.log
oliven
china
[root@www ~]$ echo $name
oliven
[root@www ~]$ grep $name grep.log
oliven
[root@www ~]$ grep ‘$name‘ grep.log
[root@www ~]$ grep "$name" grep.log
oliven
由此得出:
符號 | 意義 |
---|---|
grep 無引號 | 調用的變量(不推薦) |
grep 單引號 | 使用的是自身,‘$name‘,是使用的是$name這個5字符串進行匹配而不是,變量 |
grep 雙引號 | 調用的變量(推薦使用) |
3.2.4 awk 調用變量
[root@www ~]$ x=some
[root@www ~]$ awk ‘BEGIN {print $x}‘
[root@www ~]$ awk ‘BEGIN {print ‘$x‘}‘
[root@www ~]$ awk ‘BEGIN {print "$x"}‘
$x
[root@www ~]$ awk ‘BEGIN {print "‘$x‘"}‘
some
awk | x=some | x=‘some‘ | x="some" | x=`cmd` |
---|---|---|---|---|
awk 加雙引號 | 本身 | 本身 | 本身 | 本身 |
awk 不加引號 | 空 | 空 | 空 | 空 |
awk 加單引號 | 正確輸出 | 空 | 空 | 報語法錯 |
awk 加單引號後在同時加雙引號 | 正確輸出 | 正確輸出 | 正確輸出 | 正確輸出 |
3.3 特殊變量
在 Shell 中存在一些特殊且重要的變量,例如:$0、$1、$#,我們稱之為特殊位置參數變量。要從命令行、函數或腳本執行等處傳遞參數時,就需要在 Shell 腳本中使用位置參數變量。下表為常用特殊位置參數變量的說明。
位置變量 | 作用說明 |
---|---|
$0 | 獲取當前執行的 Shell 腳本的文件名,如果包含路徑,那麽就包括路徑 |
$n | 獲取當前執行的 Shell 腳本的第 n 個參數值,如果 n 大於9,則用大括號括起來,例如${10},與空格分隔 |
$# | 獲取當前執行的 Shell 腳本後面接的參數的總個數 |
$* | 獲取當前 Shell 腳本所傳參的參數,不加引號和 $@ 相同,如果加上雙引號,例如:"$*",則表示將所有的參數視為單個字符串,相當於"$1 $2 $3" |
$@ | 獲取當前 Shell 腳本所有傳參的參數,不加引號和 $* 相同,如果加上雙引號,例如:"$@",則表示將所有的參數視為不同的獨立字符串,相當於"$1" "$2" "$3" "...",這是將多參數傳遞給其他程序的最佳方式,因為他會保留所有的內嵌在每個參數裏的任何空白,當"$@"和"$*"都加上 雙引號時,兩者時有區別的,都不加雙引號時,兩者無區別 |
$? | 獲取執行上一個指令的執行狀態返回值(0未成功,非零為失敗),這個 |
$$ | 獲取當前執行的 Shell 腳本的進程號(PID),這個變量不常用,了解即可 |
$! | 獲取上一個在後臺工作的進程的進程號(PID),這個變量不常用,了解即可 |
$_ | 獲取再次之前執行的命令或腳本的最後一個參數,這個變量不常用,了解即可 |
3.4 變量子串
Shell 變量子串的常用操作見下表,也可以在執行 man bash
命令之後,搜索Parameter Expansion
找到相應的幫助。
ID | 表達式 | 說明 |
---|---|---|
1 | ${parameter} | 返回變量parameter的內容 |
2 | ${#parameter} | 返回變量parameter內容的長度 |
3 | ${parameter:offset} | 在變量parameter中,從offset之後開始提取子串到結尾 |
4 | ${parameter:offset:length} | 在變量parameter中,從位置offset 之後開始提取長度為length的子串 |
5 | ${parameter#word} | 從變量parameter開頭開始刪除最短匹配的 word 子串 |
6 | ${parameter##word} | 從變量parameter開頭開始刪除最長匹配的 word 子串 |
7 | ${parameter%word} | 從變量parameter結尾開始刪除最短匹配的 word 子串 |
8 | ${parameter%%word} | 從變量parameter結尾開始刪除最長匹配的 word 子串 |
9 | ${parameter/pattern/string} | 使用 string 代替第一個匹配的 pattern |
10 | ${parameter//pattern/string} | 使用 string 替換所有匹配的 pattern |
11 | ${parameter:-word} | 如果 parameter 的變量值為空或未賦值,則會返回 word 字符串並替代變量的值,用途:如果變量未定義,則返回備用的值,防止變量為空值或因未定義而導致異常 |
12 | ${parameter:=word} | 如果 parameter 的變量值為空或未賦值,則設置這個變量值為 word,並返回其值,位置變量和特殊變量不適用 |
13 | ${parameter:?word} | 如果 parameter 變量值為空或未賦值,那麽 word 字符串將被作為標準錯誤輸出,否則輸出變量的值 |
14 | ${parameter:+word} | 如果 paraneter 變量值為空或未賦值,則什麽都不做,否則 word 字符串將替代變量的值 |
4. Shell 運算符
如果要執行算術運算,就會離不開各種運算符號,和其他編程語言類似,Shell 也有很多算術運算符,如下表所示:
算術運算符 | 意義 |
---|---|
+、- | 加發、減法 |
*、/、% | 乘法、除法、取余 |
** | 冪運算 |
++、-- | 增加、減少 |
!、&&、|| | 邏輯非、邏輯與、邏輯或 |
<、<=、>、>= | 小於、小於大雨、大於、大於等於 |
==、!=、= | 相等、不相等、對於字符串"="也可以表示相當於 |
<<、>> | 向左移位、向右移位 |
~、|、&、^ | 按位取反、按位異或、按位與、按位或 |
=、+=、-=、*=、/=、%= | 賦值運算符例如,a+=1相當於a=a+1, a-=1 相當於a=a-1* |
運算命令 | 意義 |
---|---|
(()) | 用於整數運算的常用運算符,效率很高 |
let | 用於整數運算,類似於(()) |
expr | 可用於整數運算,但還有很多其他的額外功能 |
bc | Linux 下的一個計算器程序(適合整數及小數運算) |
$[] | 用於整數運算 |
awk | awk 既可用於整數運算,也可以用於小數運算 |
declare | 定義變量值和屬性,-i 參數可以用於定義整形變量,做運算 |
() | 括號中的命令將會新開一個子shell順序執行,所以括號內的變量不能被余下的部分使用,多個命令由分號; 分隔 |
$() | 執行該命令,與`相同, |
((n#y)) | 進制轉換,例如$((2#10100101))、$((16#5f)) |
((a++)) | 整數重新賦值並自動增長,((a++))同等於let a++ |
{} | 不創建子shell執行命令,例如{ echo "Hello Linux."; } |
測試表達式符號 | [] | test | [[]] | (()) |
---|---|---|---|---|
便捷是否需要空格 | 需要 | 需要 | 需要 | 需要 |
邏輯操作符 | !、-a、-o | !、-a、-o | !、&&、|| | !、&&、|| |
整數比較操作符 | -eq、-gt、-lt、-ge、-le | -eq、-gt、-lt、-ge、-le | -eq、-gt、-lt、-ge、-le 或者 =、>、<、>=、<= | =、>、<、>=、<= |
字符串比較操作符 | =、==、!= | =、==、!= | =、==、!= | =、==、!= |
是否支持通配符匹配 | 不支持 | 不支持 | 支持 | 不支持 |
x.-系統變量列表
CDPATH # 冒號分割的目錄列表,最為cd命令的搜索路徑
HOME # 當前用戶的主目錄
IFS # shell用來將文本字符串分割成字段的一系列字符
MAIL # 當前用戶手機哪像的文件名(bash shell會檢查這個文件,看看有沒有新郵件)
MAILPATH # 冒號分割的當前用戶收件箱的文件名列表(bash shell會檢查這個文件,看有沒有新郵件)
OPTARG # getopts命令處理的最後一個選項參數值
OPTIND # getopts命令處理的最後一個選項參數的索引號
PATH # shell查找命令的目錄列表,由冒號分隔
PS1 # shell命令行界面的主提示符
PS2 # shell命令行界面的次提示符
BASH # 當前shell實例的全路徑名
BASH_ALIASES # 含有當前已設置別名的關聯數組
BASH_ARGC # 含有傳入子函數或shell腳本的參數總數的數組變量
BASH_ARCV # 含有傳入子函數或shell腳本的參數的數組變量
BASH_CMDS # 關聯數組,包含shell執行過的命令的所在位置
BASH_COMMAND # shell正在執行的命令或馬上就執行的命令
BASH_ENV # 設置了的話,沒個bash腳本會在運行前先嘗試運行該變量定義的啟動文件
BASH_EXECUTION_STRING # 使用bash -c選項傳遞過來的命令
BASH_LINENO # 含有當前執行的shell函數的源代碼行號的數組變量
BASH_REMATCH # 只讀數組,在使用正則表達式的比較運算符=~進行肯定匹配(positive match)時,包 含了匹配到的模式和子模式
BASH_SOURCE # 含有當前正在執行的shell函數所在源文件名的數組變量
BASH_SUBSHELL # 當前子shell環境的嵌套級別(初始值是0)
BASH_VERSINFO # 含有當前運行的bash shell的主版本號和次版本號的數組變量
BASH_VERSION # 當前運行的bash shell的版本號
BASH_XTRACEFD # 若設置成了有效的文件描述符(0,1,2),則‘set -x‘調試選項生成的跟蹤輸出可被重定向。通常用來跟蹤輸出到一個文件中
BASHOPTS # 當前啟用的bash shell選項的列表
BASHPID # 當前bash進程的PID
COLUMNS # 當前bash shell實例所用終端的寬度
COMP_LINE # 當前命令行
COMP_POINT # 當前光標位置相對於當前命令起始的索引
COMP_KEY # 用來調試shell函數不全功能的最後一個鍵
COMP_TYPE # 一個整數值,表示所嘗試的不全類型,用以完成shell函數補全
COMP_WORDBREAKS # Readline庫中用於單詞補全的詞分隔字符
COMP_WORDS # 含有當前命令行所有單詞的數組變量
COMPREPLY # 含有由shell函數生成的可能填充代碼的數組變量
COPROC # 占用未命名的協進程的I/O文件描述符的數組變量
DIRSTACK # 含有目錄棧當前內容的數組變量
EMACS # 設置為‘t‘時,表明emasc shell緩沖區正在工作,而編輯功能被禁止
ENV # 如果設置了該環境變量,在bash shell腳本運行之前會先執行已定義的啟動文件(僅用於當bash shell以POSIX模式被調用時)
EUID # 當前用戶的有效用戶ID(數字形式)
FCEDIT # 供fc命令使用的默認編輯器
FIGNORE # 在進行文件名不全時可以忽略後綴名列表,由冒號分分隔
FUNCNAME # 當執行的shell函數的名稱
FUNCNEST # 當設置成非零值時,表示所允許的最大函數嵌套及數(一旦超出,當前命令即被終止)
GLOBIGNORE # 冒號分隔的模式列表, 定義了在進行文件名擴展時可以忽略一組文件名。
GROUPS # 含有當前用戶屬組列表的數組變量
histchars # 控制歷史記錄擴展,最多可有3個字符
HISTCMD # 當前命令在歷史記錄中的編號
HISTCONFTROL # 控制哪些命令留在歷史記錄列表中
HISTFILE # 保存shell歷史記錄列表的文件名(默認是 .bash_history)
HISTFILESIZE # 最多在歷史文件中存多少行
HISTTIMEFORMAT # 如果設置了且非空,就用作格式化字符串,以顯示bash歷史中每條命令的時間戳
HISTIGNORE # 由冒號分隔的模式列表,用來決定歷史文件中哪些命令會被忽略
HISTSIZE # 最多在歷史文件中存多少條命令
HOSTFILE # shell在補全主機名時讀取的文件名稱
HOSTNAME # 當前主機的名稱
HOSTTYPE # 當前運行bash shell的機器
IGNOREEOF # shell在退出前必須受到連續的EOF字符的數量(如果這個值不存在,默認是1)
INPUTRC # Readline初始化文件名(默認是.inputrc)
LANG # shell的語言環境類別
LC_ALL # 定義了一個語言環境類別,能夠覆蓋LANG變量
LC_CTYPE # 決定如何解釋出現在文件名擴展和模式匹配中的字符
LC_COLLATE # 設置字字符串時用的排序規則
LC_MESSAGES # 在解釋前面帶有$的雙引號字符時,該環境變量決定了所采用的語言環境設置
LC_NUMERIC # 決定著格式化數字時采用的語言環境設置
LINENO # 當前執行的腳本的行號
LINES # 定義了終端上可見的行數
MACHTYPE # 用‘CPU-公司-系統‘(CPU-company-system)格式定義的系統類型
MAPFILE # 一個數組變量,當mapfile命令未指定數組變量作為參數時,它存儲了mapfile所讀入的文本
MAILCHECK # shell查看新郵件的頻率(以秒為單位,默認值是60)
OLDPWD # shell之前的工作目錄
OPTERR # 當設置為1時,bash shell會顯示getopts命令產生的錯誤
OSTYPE # 定義了shell 所在的操作系統
PIPESTATUS # 含有前臺進程的退出狀態列表的數組變量
POSIXLY_CORRECT # 設置了的話,bash會以POSIX模式啟動
PPID # bash shell父進程的PID
PROMPT_COMMAND # 設置了的話,在命令行主提示符顯示之前會執行這條命令
PROMPT_DIRTRIM # 用來定義當啟用\w或\w提示符字符串轉移時顯示的尾部目錄名的數量,被刪除的目錄名會用一組英文據點替換。
PS3 # select 命令的提示符
PS4 # 如果使用了bash的-x選項,在命令行之前顯示的提示信息
PWD # 當前工作目錄
RANDOM # 返回一個0 ~ 32767的隨機數(對其的賦值可作為隨機數生成器的種子)
READLINE_LINE # 當使用bind -x命令時,存儲Readline緩沖區的內容
READLINE_POINT # 當使用bind -x命令時,表示Readline緩沖區內容插入點的當前位置
REPLY # read命令的默認變量
SECONDS # 自從shell啟動到現在的秒數(對其賦值將會重置計數器)
SHELL # bash shell 的全路徑名
SHELLOPTS # 已啟用bash shell 選項列表,列表項之間以冒號分割
SHLVL # shell的層級,每次啟動一個新bash shell,該值增加1
TIMEFORMAT # 指定了shell的時間顯示格式
TMOUT # select和read命令在沒輸入的情況下等待多久(以秒為單位),默認值為0,表示無限長
TMPDIR # 目錄名,保存bash shell創建的臨時文件
UID # 當前用戶的真實用戶ID(數字形式)
Linux 變量的使用