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變數1程式設計變數
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- Shell程式設計-02-Shell變數程式設計變數
- shell程式設計–bash變數程式設計變數
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- Shell程式設計規範與變數程式設計變數
- shell程式設計–bash變數介紹程式設計變數
- 01 shell程式設計規範與變數程式設計變數
- 01 shell程式設計之變數定義程式設計變數
- Linux Shell變數Linux變數
- Linux之shell程式設計Linux程式設計
- Linux Shell程式設計(1)Linux程式設計
- Linux Shell程式設計(2)Linux程式設計
- shell程式設計02——變數定義與使用程式設計變數
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- Linux之shell變數Linux變數
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- Linux從入門到精通系列之SHELL程式設計變數與四則運算Linux程式設計變數
- Linux入門---(三)Shell程式設計Linux程式設計
- 前端學習 linux —— shell 程式設計前端Linux程式設計
- 【學習】Linux Shell指令碼程式設計Linux指令碼程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- 【shell程式設計】目錄檔案計數程式設計
- 《Linux系統程式設計訓練營》5_環境變數程式設計Linux程式設計變數
- Linux中bash shell環境變數Linux變數
- Linux基礎之Shell與變數Linux變數
- Linux Shell指令碼程式設計-基礎1Linux指令碼程式設計
- Linux作業系統之Shell程式設計Linux作業系統程式設計
- Linux-shell程式設計入門基礎Linux程式設計
- Linux大資料定製篇 Shell程式設計Linux大資料程式設計
- Shell程式設計程式設計
- Shell程式設計 --- Shell介紹程式設計
- Shell指令碼程式設計規範與變數(shell指令碼必須要知道的規矩!)指令碼程式設計變數
- 『忘了再學』Shell基礎 — 14、環境變數(二)變數
- ORA-00600: 內部錯誤程式碼, 引數: [kcbchg1_14]
- Linux Shell指令碼程式設計while語句案例Linux指令碼程式設計While
- Linux shell程式設計常用萬用字元有哪些?Linux程式設計字元