歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Unix中挖掘環境變量背後的價值

Unix中挖掘環境變量背後的價值

日期:2017/2/28 16:47:47   编辑:Linux教程

  環境變量可以作用於用戶的整個工作環境。同時相關的應用程序也需要利用這些環境變量來獲取進程運行的環境變量。不如郵件監測程序,默認情況下會沒隔一段時間去查看一下是否有新的郵件。要實現這個功能的話這個郵件監測程序必須要知道郵件存儲的位置與監測的頻率。這兩樣東西就是通過Unix系統的環境變量來實現的。不過在實際工作中,不少Unix系統工程師忽視了環境變量的作用。或者說,沒有把環境變量背後的價值挖掘出來。筆者這篇文章或許能夠給廣大Unix系統愛好者一點啟示。

  一、提示符的作用。

  在談提示符的價值之前,筆者先給大家看一下dos下提示符的顯示格式。如下圖所示,是微軟XP操作系統下DOS版本的截圖。

從這個截圖中大家可以看出,DOS下的提示符是比較直觀的。先是盤符,然後是當前的絕對路徑,然後以>符號結尾。但是在Unix系統中卻不是如此。在Unix系統下,其路徑不是決定路徑,而只是顯示當前目錄的名稱。這就給平時的維護造成了一定的困難。那麼在Unix系統下能否按DOS下的提示符格式來顯示呢?即顯示當前的絕對路徑。要實現這個功能,就需要從Unix的提示符說起了。

  提示符信息也是Unix操作系統中的環境變量。在shell環境中有兩個提示符,分別為PS1與PS2。其中PS1為主提示字符串,即大家平常所看到的那個提示符(可能是一個美元符號$或者一個#字號)。通常情況下,如果當前用戶是特權用戶,則其主提示符可能為#;如果當前用戶為普通用戶,則其主提示符就為$符號。另外在shell進程中,還可以運行多條命令。此時系統會顯示>提示符,這個提示符就是次級提示符,保存在PS2環境變量中。那麼如何通過這個提示符來實現如上的需求呢?且聽筆者慢慢道來。

  1、首先需要顯示的就是不管是主提示符還是次級提示符,都以>結束。此時系統工程師可以通過改變主提示符的值來實現。如可以通過$PS1=”>”命令來實現。這個命令的作用就是改變這個環境變量的值。另外有些人可能還喜歡在前面加入c:盤符,此時就可以把主提示符PS1的值設置為”c:>”。不過需要注意的是,Unix的文件系統跟微軟的文件系統不一樣。在Unix操作系統中,其只有一個跟目錄,即一個樹狀結構;而在Windows操作系統中,每個分區都有一個根目錄,都有一個獨立的樹狀結構。故在Unix操作系統中沒有C、D、E盤的區分。

  2、其次是要實現在提示符中顯示絕對路徑。此時需要PWD環境變量的幫助。在Linux系統中,pwd命令可以用來顯示當前的絕對路徑。不過在Unix操作系統中的BASH中(shell的一種),專門提供了一個PWD環境變量。這個環境變量主要用來存儲當前光標所在的絕對路徑。PWD是一個動態的環境變量。當用戶每次切換目錄時,這個環境變量都將被重新賦值。如果要在提示符中顯示當前的絕對路徑,那麼只需要把這個變量賦於給主提示符PS1即可。由於PWD變量動態改變的特性,此時主提示符也會隨著PWD環境變量(絕對路徑)的改變而改變。具體的賦值命令為:$PS1=’ $PWD’。這裡筆者要強調一個小細節。當把一個環境變量賦值給另外一個環境變量時,則需要加入$符號。否則的話,Unix操作系統會把這個變量當作一個普通的字符串來對待。筆者在給學員進行培訓時,這是他們經常犯的錯誤。這注意是因為他們可能受到以前經驗的影響。因為在一些開發環境中編程的時候,在把某個變量的值賦值給其他變量時,不需要在變量前加入$等類似的特殊符號。但是這裡需要注意,在Unix操作系統中如果把某個環境變量的值賦值給另外一個環境變量,必須要用$符號來標示,否則的話系統會把這個環境變量名字當作普通的字符來處理。

  提示符除了可以模擬實現DOS提示符顯示格式之外,還有其他一些重要的作用。如大部分系統工程師在管理Unix服務器的時候,不會直接通過Unix終端控制台來進行。而是利用ssh等遠程連接協議進行遠程登陸,進行遠程維護。如果企業中Unix服務器比較多的話,系統工程師就可能會比較麻煩。因為在默認情況下,利用ssh協議遠程登陸到Unix操作系統,在終端上不會顯示Unix主機的名字。為此如果系統工程師在同一時刻連接了多台Unix服務器的話,則其就不能夠一目了然的知道到底是哪台Unix服務器。在這種情況下,系統工程師就希望在提示符中能夠顯示Unix主機的名字。在bash環境中,有一個轉義字符可以實現類似的需求。\h這個轉義字符就是用來顯示當前主機的名字。為此如果系統工程師需要提示符中顯示主機的名字,則可以通過如下的命令來實現,$PS1=”\h”。如此設置後,在Unix操作系統提示符中就會顯示當前主機的名字。這方面在Linux系統上就做的比較好,其默認情況下就會顯示主機的名字。

Copyright © Linux教程網 All Rights Reserved