Linux Shell程式設計(14)——內部變數
內建變數
影響Bash指令碼行為的變數。
$BASH
Bash二進位制程式檔案的路徑
bash$ echo $BASH
/bin/bash
$BASH_ENV
該環境變數儲存一個Bash啟動檔案路徑,當啟動一個指令碼程式時會去讀該環境變數指定的檔案。
$BASH_SUBSHELL
一個指示子shell(subshell)等級的變數。它是Bash版本3新加入的。
$BASH_VERSINFO[n]
這個陣列含有6個元素,指示了安裝的Bash版本的資訊。它和$BASH_VERSION相似,但它們還是有一些小小的不同。
# Bash版本資訊:
for n in 0 1 2 3 4 5
do
echo "BASH_VERSINFO[$n] = ${BASH_VERSINFO[$n]}"
done
# BASH_VERSINFO[0] = 3 # 主版本號.
# BASH_VERSINFO[1] = 00 # 次版本號.
# BASH_VERSINFO[2] = 14 # 補丁級.
# BASH_VERSINFO[3] = 1 # 編譯版本.
# BASH_VERSINFO[4] = release # 發行狀態.
# BASH_VERSINFO[5] = i386-redhat-linux-gnu # 結構體系
# (和變數$MACHTYPE相同).
$BASH_VERSION
安裝在系統裡的Bash版本
檢查$BASH_VERSION是檢測哪個shell在執行的好辦法。$SHELL變數不一定能給出正確的答案。
$DIRSTACK
在目錄堆疊裡面最頂端的值(它受pushd和popd的控制)
這個內建的變數和dirs命令相符,但dirs是給出整個目錄堆疊的內容。
$EDITOR
由指令碼呼叫的預設的編輯器,一般是vi或是emacs.
$EUID
有效使用者ID
當前使用者無論是什麼標識都會被認為是這個有效使用者ID,這可能依賴於su.
變數$UID不一定和$EUID相同。
$FUNCNAME
當前函式的名字
$GLOBIGNORE
由萬用字元(globbing)擴充套件的一列檔名模式。
$GROUPS
目前使用者所屬的組
它是當前使用者在/etc/passwd檔案中記錄的所屬的組列表(陣列)。
$HOME
使用者的家目錄,通常是/home/username
$HOSTNAME
在系統啟動時由一個初始化指令碼中用hostname命令給系統指派一個名字。然而,gethostname()函式能設定Bash內部變數E$HOSTNAME。
$HOSTTYPE
機器型別
像$MACHTYPE一樣標識系統硬體。
$PPID
一個程式的$PPID變數儲存它的父程式的程式ID(pid)。
用這個變數和pidof命令比較。
$PROMPT_COMMAND
這個變數在主提示符前($PS1顯示之前)執行它的值裡儲存的命令。
$PS1
這是主提示符(第一提示符),它能在命令列上看見。
$PS2
副提示符(第二提示符),它在期望有附加的輸入時能看見。它顯示像">"的提示。
$PS3
第三提示符。它在一個select迴圈裡顯示
$PS4
第四提示符,它在用-x選項呼叫一個指令碼時的輸出的每一行開頭顯示。它通常顯示像"+"的提示。
$PWD
工作目錄(即你現在所處的目錄)
它類似於內建命令pwd。
例子:是root嗎?
影響Bash指令碼行為的變數。
$BASH
Bash二進位制程式檔案的路徑
bash$ echo $BASH
/bin/bash
$BASH_ENV
該環境變數儲存一個Bash啟動檔案路徑,當啟動一個指令碼程式時會去讀該環境變數指定的檔案。
$BASH_SUBSHELL
一個指示子shell(subshell)等級的變數。它是Bash版本3新加入的。
$BASH_VERSINFO[n]
這個陣列含有6個元素,指示了安裝的Bash版本的資訊。它和$BASH_VERSION相似,但它們還是有一些小小的不同。
# Bash版本資訊:
for n in 0 1 2 3 4 5
do
echo "BASH_VERSINFO[$n] = ${BASH_VERSINFO[$n]}"
done
# BASH_VERSINFO[0] = 3 # 主版本號.
# BASH_VERSINFO[1] = 00 # 次版本號.
# BASH_VERSINFO[2] = 14 # 補丁級.
# BASH_VERSINFO[3] = 1 # 編譯版本.
# BASH_VERSINFO[4] = release # 發行狀態.
# BASH_VERSINFO[5] = i386-redhat-linux-gnu # 結構體系
# (和變數$MACHTYPE相同).
$BASH_VERSION
安裝在系統裡的Bash版本
檢查$BASH_VERSION是檢測哪個shell在執行的好辦法。$SHELL變數不一定能給出正確的答案。
$DIRSTACK
在目錄堆疊裡面最頂端的值(它受pushd和popd的控制)
這個內建的變數和dirs命令相符,但dirs是給出整個目錄堆疊的內容。
$EDITOR
由指令碼呼叫的預設的編輯器,一般是vi或是emacs.
$EUID
有效使用者ID
當前使用者無論是什麼標識都會被認為是這個有效使用者ID,這可能依賴於su.
變數$UID不一定和$EUID相同。
$FUNCNAME
當前函式的名字
$GLOBIGNORE
由萬用字元(globbing)擴充套件的一列檔名模式。
$GROUPS
目前使用者所屬的組
它是當前使用者在/etc/passwd檔案中記錄的所屬的組列表(陣列)。
$HOME
使用者的家目錄,通常是/home/username
$HOSTNAME
在系統啟動時由一個初始化指令碼中用hostname命令給系統指派一個名字。然而,gethostname()函式能設定Bash內部變數E$HOSTNAME。
$HOSTTYPE
機器型別
像$MACHTYPE一樣標識系統硬體。
$PPID
一個程式的$PPID變數儲存它的父程式的程式ID(pid)。
用這個變數和pidof命令比較。
$PROMPT_COMMAND
這個變數在主提示符前($PS1顯示之前)執行它的值裡儲存的命令。
$PS1
這是主提示符(第一提示符),它能在命令列上看見。
$PS2
副提示符(第二提示符),它在期望有附加的輸入時能看見。它顯示像">"的提示。
$PS3
第三提示符。它在一個select迴圈裡顯示
$PS4
第四提示符,它在用-x選項呼叫一個指令碼時的輸出的每一行開頭顯示。它通常顯示像"+"的提示。
$PWD
工作目錄(即你現在所處的目錄)
它類似於內建命令pwd。
例子:是root嗎?
#!/bin/bash
ROOT_UID=0 # Root的$UID為0.
if [ "$UID" -eq "$ROOT_UID" ] # 真正的"root"才能經得住考驗
then
echo "You are root."
else
echo "You are just an ordinary user (but mom loves you just the same)."
fi
exit 0
# ============================================================= #
# 下面的程式碼不會執行,因為指令碼在上面已經退出了.
# 另外一種判斷是否是root使用者的方法:
ROOTUSER_NAME=root
username=`id -nu` # 或者... username=`whoami`
if [ "$username" = "$ROOTUSER_NAME" ]
then
echo "Rooty, toot, toot. You are root."
else
echo "You are just a regular fella."
fi
相關文章
- [Shell] shell中的內部變數變數
- Linux Shell程式設計(10)——引用變數Linux程式設計變數
- Shell程式設計-shell變數1程式設計變數
- Linux Shell程式設計(6)——變數替換Linux程式設計變數
- Linux Shell程式設計(7)——變數賦值Linux程式設計變數賦值
- Linux Shell程式設計(8)——變數詳解Linux程式設計變數
- Shell程式設計-02-Shell變數程式設計變數
- shell程式設計–bash變數程式設計變數
- shell程式設計(一)變數程式設計變數
- Linux Shell程式設計(9)——特殊變數型別Linux程式設計變數型別
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- shell程式設計-高階變數程式設計變數
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- shell程式設計–bash變數介紹程式設計變數
- shell程式設計規範與變數程式設計變數
- 01 shell程式設計之變數定義程式設計變數
- 01 shell程式設計規範與變數程式設計變數
- Linux Shell程式設計(13)——數字常量Linux程式設計
- Linux Shell程式設計(1)——shell程式設計簡介Linux程式設計
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- Rust 程式設計影片教程(進階)——014RefCell 和內部可變性Rust程式設計
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- shell程式設計之環境變數配置檔案程式設計變數
- Linux Shell變數Linux變數
- linux shell 程式設計Linux程式設計
- linux shell程式設計Linux程式設計
- Linux系統程式設計(14)——shell常用命令Linux程式設計
- Linux Shell程式設計(27)——子shellLinux程式設計
- Rust 程式設計視訊教程(進階)——014RefCell 和內部可變性Rust程式設計
- Linux 程式設計之Shell程式設計(轉)Linux程式設計
- Linux之shell變數Linux變數
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- Linux Shell程式設計(2)——第一個shell程式Linux程式設計
- Shell程式設計基礎學習之三:變數和test程式設計變數