Linux下的變量
Linux變量
Linux下的變量主要分為三種:本地變量、環(huán)境變量和位置變量
本地變量本地變量是用戶(hù)在當(dāng)前shell生命周期內(nèi)聲明的變量缰揪,隨著shell進(jìn)程的終止而銷(xiāo)毀陨享。
環(huán)境變量適用于所有由登錄進(jìn)程產(chǎn)生的子進(jìn)程(父進(jìn)程的環(huán)境變量在子進(jìn)程中可用)。
Shell參數(shù)用于向shell腳本傳遞參數(shù)钝腺,只讀抛姑。
本地變量
本地變量如同局部變量,只在當(dāng)前shell中起作用艳狐,不會(huì)影響其他shell中的變量定硝。
-
變量賦值
使用variable=value賦值,變量賦值遵循從右到左的順序
$X=$Y Y=y $echo $X $y
-
變量顯示
-
通過(guò)echo顯示某一變量
$echo $WEEK
-
通過(guò)set顯示當(dāng)前SHELL的所有變量毫目,包括內(nèi)置變量與用戶(hù)定義過(guò)得所有變量喷斋。
$set
-
-
變量調(diào)用
使用$符號(hào)進(jìn)行變量調(diào)用,若與其他字符相連則應(yīng)加上大括號(hào)蒜茴。
$echo Today is ${WEEK}day
-
刪除變量
使用unset命令刪除變量的賦值
$unset Z
-
命令替換
在Bourne Shell中可以使變量在特定條件下執(zhí)行
${variable: -value} 在變量為空時(shí)星爪,使用默認(rèn)的value值。變量的值并沒(méi)有改變粉私。
${variable:=value} 不但使用默認(rèn)值進(jìn)行替換顽腾,而且將默認(rèn)值賦給該變量。
${varibale:+value} 當(dāng)變量已賦值時(shí),則用默認(rèn)值進(jìn)行提換抄肖,如果為空則顯示空久信。
${variable:?message} 當(dāng)變量已賦值時(shí),則輸出值漓摩。未賦值則輸出message裙士。$echo Hello $UNAME $Hello $echo Hello ${UNAME: -there} $Hello there $echo $UNAME $ $UNAME=hohn $echo Hello ${UNAME: -there} $Hello john
-
特殊命令
-
readonly 變量名
使變量名變?yōu)橹蛔x。單獨(dú)運(yùn)行readonly顯示所有的制度變量管毙。
-
export 變量名
export命令可以將本地變量聲明為環(huán)境變量腿椎,供子進(jìn)程使用。
-
Shell參數(shù)
-
位置參數(shù)
由系統(tǒng)提供的參數(shù)稱(chēng)為位置參數(shù)夭咬。位置參數(shù)的值可以用$N得到啃炸,N是一個(gè)數(shù)字,如果為1卓舵,即$1.類(lèi)似C語(yǔ)言中的數(shù)組南用,在shell解釋用戶(hù)的命 令時(shí),將把命令行的第一個(gè)字作為命令掏湾,而其他的字作為參數(shù)裹虫。當(dāng)命令對(duì)應(yīng)的可執(zhí)行文件為Shell程序時(shí),這些參數(shù)將作為位置變量傳送給該程序融击。第0號(hào)為程 序名字筑公,從1開(kāi)始就表示傳遞給程序的參數(shù)。第一個(gè)參數(shù)記為$1,第二個(gè)為$2....第九個(gè)為$9砚嘴。其中1到9是真正的參數(shù)名十酣,"$"符只是用來(lái)標(biāo)識(shí)變量的替換
-
內(nèi)部參數(shù)
Shell內(nèi)存在著幾個(gè)內(nèi)部變量涩拙,代表著程序本身际长。
$# ----傳遞給程序的總的參數(shù)數(shù)目
$? ----上一個(gè)代碼或者shell程序在shell中退出的情況,如果正常退出則返回0兴泥,反之為非0值
$* ----傳遞給程序的所有參數(shù)組成的字符串
$- ----在Shell啟動(dòng)或使用set命令時(shí)提供選項(xiàng)
$? ----上一條命令執(zhí)行后返回的值
$$ ----當(dāng)前shell的進(jìn)程號(hào)
$! ----上一個(gè)子進(jìn)程的進(jìn)程號(hào)
$@ ----所有的參數(shù)工育,每個(gè)都用雙括號(hào)括起
$n ----位置參數(shù)值,n表示位置
$0 ----當(dāng)前shell名
環(huán)境變量
-
變量賦值
-
Linux中包含環(huán)境變量配置文件的調(diào)用順序
系統(tǒng)啟動(dòng):
- etc/environment(該文件為整個(gè)系統(tǒng)的環(huán)境搓彻,在系統(tǒng)啟動(dòng)時(shí)載入)
用戶(hù)登錄(login shell):
- etc/profile (用戶(hù)登錄時(shí)讀取的環(huán)境設(shè)置如绸,所有用戶(hù)的統(tǒng)一環(huán)境變量)
- ~/.bash_profile ~/.bash_login ~/.profile (在用戶(hù)登錄后,profile會(huì)依次在用戶(hù)目錄查找以上三個(gè)文件旭贬。profile會(huì)調(diào)用第一個(gè)找到的文件怔接,在調(diào)用后返回。)
- ~/.bashrc etc/bashrc
(/.bash_profile會(huì)調(diào)用/.bashrc稀轨,而~/.bashrc一般會(huì)調(diào)用etc/bashrc)
打開(kāi)新的終端(non-login shell)
- ~/.bashrc (在每一次打開(kāi)新的終端窗口時(shí)扼脐,都會(huì)被調(diào)用)
- etc/bashrc (由.bashrc調(diào)用)
-
環(huán)境變量的設(shè)置
-
在/etc/profile文件中添加環(huán)境變量
在登陸系統(tǒng)時(shí)讀取,針對(duì)所有用戶(hù),永久有效
```Shell //添加CLASSPATH $ vi /etc/prfile //在文件中添加 export CLASSPATH=XXXXXXX //若需要立即生效 $ source /etc/profile ```
-
在~/.bash_profile中添加環(huán)境變量
在登錄系統(tǒng)時(shí)讀取瓦侮,針對(duì)單一用戶(hù)艰赞,永久有效
-
在~/.bashrc中添加變量
在系統(tǒng)登錄和每次打開(kāi)Shell時(shí)讀取,針對(duì)單一用戶(hù)肚吏,永久有效
-
使用export命令定義變量
支隊(duì)當(dāng)前Shell臨時(shí)有效
-
-
-
變量顯示
-
通過(guò)echo顯示某一環(huán)境變量
$echo $PATH
-
通過(guò)env活著printenv顯示當(dāng)前所有環(huán)境變量
$env
-
-
變量調(diào)用
使用$符號(hào)進(jìn)行變量調(diào)用方妖,若與其他字符相連則應(yīng)加上大括號(hào)。
$echo $PATH
-
變量刪除
可以使用unset刪除環(huán)境變量罚攀。
Shell關(guān)閉時(shí)党觅,在Shell中export設(shè)置的環(huán)境變量會(huì)銷(xiāo)毀。 -
常用變量
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當(dāng)前用戶(hù)主目錄
HISTSIZE 歷史記錄數(shù)
LOGNAME 當(dāng)前用戶(hù)的登錄名
HOSTNAME 指主機(jī)的名稱(chēng)
SHELL 當(dāng)前用戶(hù)Shell類(lèi)型
LANGUGE 語(yǔ)言相關(guān)的環(huán)境變量坞生,多語(yǔ)言可以修改此環(huán)境變量
MAIL 當(dāng)前用戶(hù)的郵件存放目錄
PS1 基本提示符仔役,對(duì)于root用戶(hù)是#,對(duì)于普通用戶(hù)是$