解析一個(gè)Unix操作系統(tǒng)環(huán)境變量
Unix操作系統(tǒng)中,環(huán)境變量可以作用于用戶的整個(gè)工作環(huán)境。同時(shí)相關(guān)的應(yīng)用程序也需要利用這些環(huán)境變量來獲取進(jìn)程運(yùn)行的環(huán)境變量。今天,我們就來學(xué)習(xí)下Unix操作系統(tǒng)提示符的作用。
Unix操作系統(tǒng)提示符的作用
DOS下的提示符是比較直觀的。先是盤符,然后是當(dāng)前的絕對(duì)路徑,然后以>符號(hào)結(jié)尾。但是在Unix系統(tǒng)中卻不是如此。在Unix系統(tǒng)下,其路徑不是決定路徑,而只是顯示當(dāng)前目錄的名稱。這就給平時(shí)的維護(hù)造成了一定的困難。那么在Unix系統(tǒng)下能否按DOS下的提示符格式來顯示呢?即顯示當(dāng)前的絕對(duì)路徑。要實(shí)現(xiàn)這個(gè)功能,就需要從Unix的提示符說起了。
提示符信息也是Unix操作系統(tǒng)中的環(huán)境變量。在shell環(huán)境中有兩個(gè)提示符,分別為PS1與PS2。其中PS1為主提示字符串,即大家平常所看到的那個(gè)提示符(可能是一個(gè)美元符號(hào)$或者一個(gè)#字號(hào))。通常情況下,如果當(dāng)前用戶是特權(quán)用戶,則其主提示符可能為#;如果當(dāng)前用戶為普通用戶,則其主提示符就為$符號(hào)。另外在shell進(jìn)程中,還可以運(yùn)行多條命令。此時(shí)系統(tǒng)會(huì)顯示>提示符,這個(gè)提示符就是次級(jí)提示符,保存在PS2環(huán)境變量中。那么如何通過這個(gè)提示符來實(shí)現(xiàn)如上的需求呢?且聽筆者慢慢道來。
1、首先需要顯示的就是不管是主提示符還是次級(jí)提示符,都以>結(jié)束。此時(shí)系統(tǒng)工程師可以通過改變主提示符的值來實(shí)現(xiàn)。如可以通過$PS1=”>”命令來實(shí)現(xiàn)。這個(gè)命令的作用就是改變這個(gè)環(huán)境變量的值。另外有些人可能還喜歡在前面加入c:盤符,此時(shí)就可以把主提示符PS1的值設(shè)置為”c:>”。不過需要注意的是,Unix的文件系統(tǒng)跟微軟的文件系統(tǒng)不一樣。在Unix操作系統(tǒng)中,其只有一個(gè)跟目錄,即一個(gè)樹狀結(jié)構(gòu);而在Windows操作系統(tǒng)中,每個(gè)分區(qū)都有一個(gè)根目錄,都有一個(gè)獨(dú)立的樹狀結(jié)構(gòu)。故在Unix操作系統(tǒng)中沒有C、D、E盤的區(qū)分。
2、其次是要實(shí)現(xiàn)在提示符中顯示絕對(duì)路徑。此時(shí)需要PWD環(huán)境變量的幫助。在Linux系統(tǒng)中,pwd命令可以用來顯示當(dāng)前的絕對(duì)路徑。不過在Unix操作系統(tǒng)中的BASH中(shell的一種),專門提供了一個(gè)PWD環(huán)境變量。這個(gè)環(huán)境變量主要用來存儲(chǔ)當(dāng)前光標(biāo)所在的絕對(duì)路徑。PWD是一個(gè)動(dòng)態(tài)的環(huán)境變量。當(dāng)用戶每次切換目錄時(shí),這個(gè)環(huán)境變量都將被重新賦值。如果要在提示符中顯示當(dāng)前的絕對(duì)路徑,那么只需要把這個(gè)變量賦于給主提示符PS1即可。由于PWD變量動(dòng)態(tài)改變的特性,此時(shí)主提示符也會(huì)隨著PWD環(huán)境變量(絕對(duì)路徑)的改變而改變。具體的賦值命令為:$PS1=’ $PWD’。
這里筆者要強(qiáng)調(diào)一個(gè)小細(xì)節(jié)。當(dāng)把一個(gè)環(huán)境變量賦值給另外一個(gè)環(huán)境變量時(shí),則需要加入$符號(hào)。否則的話,Unix操作系統(tǒng)會(huì)把這個(gè)變量當(dāng)作一個(gè)普通的字符串來對(duì)待。筆者在給學(xué)員進(jìn)行培訓(xùn)時(shí),這是他們經(jīng)常犯的錯(cuò)誤。這注意是因?yàn)樗麄兛赡苁艿揭郧敖?jīng)驗(yàn)的影響。因?yàn)樵谝恍╅_發(fā)環(huán)境中編程的時(shí)候,在把某個(gè)變量的值賦值給其他變量時(shí),不需要在變量前加入$等類似的特殊符號(hào)。但是這里需要注意,在Unix操作系統(tǒng)中如果把某個(gè)環(huán)境變量的值賦值給另外一個(gè)環(huán)境變量,必須要用$符號(hào)來標(biāo)示,否則的話系統(tǒng)會(huì)
提示符除了可以模擬實(shí)現(xiàn)DOS提示符顯示格式之外,還有其他一些重要的作用。如大部分系統(tǒng)工程師在管理Unix服務(wù)器的時(shí)候,不會(huì)直接通過Unix終端控制臺(tái)來進(jìn)行。而是利用ssh等遠(yuǎn)程連接協(xié)議進(jìn)行遠(yuǎn)程登陸,進(jìn)行遠(yuǎn)程維護(hù)。
如果企業(yè)中Unix服務(wù)器比較多的話,系統(tǒng)工程師就可能會(huì)比較麻煩。因?yàn)樵谀J(rèn)情況下,利用ssh協(xié)議遠(yuǎn)程登陸到Unix操作系統(tǒng),在終端上不會(huì)顯示Unix主機(jī)的名字。為此如果系統(tǒng)工程師在同一時(shí)刻連接了多臺(tái)Unix服務(wù)器的話,則其就不能夠一目了然的知道到底是哪臺(tái)Unix服務(wù)器。在這種情況下,系統(tǒng)工程師就希望在提示符中能夠顯示Unix主機(jī)的名字。在bash環(huán)境中,有一個(gè)轉(zhuǎn)義字符可以實(shí)現(xiàn)類似的需求。
\h這個(gè)轉(zhuǎn)義字符就是用來顯示當(dāng)前主機(jī)的名字。為此如果系統(tǒng)工程師需要提示符中顯示主機(jī)的名字,則可以通過如下的命令來實(shí)現(xiàn),$PS1=”\h”。如此設(shè)置后,在Unix操作系統(tǒng)提示符中就會(huì)顯示當(dāng)前主機(jī)的名字。這方面在Linux系統(tǒng)上就做的比較好,其默認(rèn)情況下就會(huì)顯示主機(jī)的名字。
在這里,我們就舉出一個(gè)Unix操作系統(tǒng)環(huán)境變量在實(shí)際工作中對(duì)于用戶的價(jià)值。其實(shí)在日常工作中,這些環(huán)境變量的價(jià)值往往被人所忽視。
【編輯推薦】