歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> Unix中的環境變量的應用

Unix中的環境變量的應用

日期:2017/3/3 15:23:48   编辑:Unix基礎知識

環境變量在Unix操作系統中的地位不用筆者多說,大家都知道。但是在Unix操作系統中,有幾個環境變量經常被人所忽視。筆者有時候跟一些經驗比較豐富的系統工程師交流時,他們也不知道有這個環境變量。筆者今天就給大家介紹一下這些被忽視的環境變量,以及其應用。幫助大家掃掃認識的盲區。

一、防止文件被意外覆蓋。

在Unix操作系統中,有一個很特殊的符號,叫做重定向符。通過這個符號,可以把一些屏幕的顯示的結果或者其他內容重定向到一個文件中。顯然這個重定向符號很受系統工程師的歡迎。如利用這個符號可以輕易的把當前目錄下所有的文件名字保存到一個文件中。但是,這個符號也有一個缺陷。如某個文件已經存在,現在系統工程師再利用重定向符號創建同名的文件時,原來的文件就會在沒有任何提示的情況下被覆蓋掉。顯然如果在操作時一不小心,就會帶來不可挽回的損失。有時候,為了避免這種情況,我們系統工程師在使用重定向符號創建文件的時候,還不得不先查看一下當前目錄下是否存在這個文件。

為此,有時候我們希望在使用重定向符號創建文件時,默認情況下是不覆蓋文件的。如果當目標文件已經存在的話,則系統會提示錯誤信息。除非用戶在重定向符號命令中,利用參數指定讓系統覆蓋原有的文件。這個需求能夠實現嗎?答案當然是肯定的。這就需要用到一個被大家所忽略的環境變量noclobber參數。

如我們需要實現上面這個需求的話,則可以進行如下設置。Set –o noclobber。這個命令的意思就是對文件采取了一種保護措施。當重定向需要建立的目標文件已經存在時,系統會提示錯誤信息(文件已經存在),並拒絕建立這個文件。如此的話,目標文件就不會被意外覆蓋掉。不過有時會系統工程師可能知道目標文件的存在。如查看進程時,前後兩次執行相同的命令。此時系統工程師就希望重定向符號覆蓋原有的文件。此時,系統工程師也不需要去取消這個保護措施。而只需要在重定向符號後面加入一個|參數。如ls *.jpg >| image.txt即可。這個命令的含義是顯示當前目錄下所有的JPG文件,並把其文件名字保存到image.txt文件中。如果目標文件已經存在的話,就覆蓋它。

顯然這個noclobber環境變量參數提供了一種文件被意外的保護機制。如果Unix操作系統用作服務器或者開發的目的,則筆者建議啟用這個環境變量參數。因為在這些應用場合,重定向符號用的特別多。有時候可能目標文件已經存在,但是可能由於疏忽而導致文件被意外覆蓋,那時系統工程師再後悔也沒有用了。所以,此時啟用這個參數的話,就可以最大限度的降低由此帶來的損失。為此筆者建議在這些場合中,最好能夠啟用這個被人遺忘在角落的環境變量,以提高文件的安全性。

二、~的替換作用。

~在Unix操作系統中叫做代字符。這也是一個在Unxi操作系統中被忽視但是卻很有作用的一個環境變量符號。簡單的來說,這個代字符可以用來表示主目錄。如現在在Unix操作系統上新建了一個用戶Jussin,並為其安裝了一個郵件客戶端。默認情況下這個郵件是保存在其用戶的主目錄下(如果在安裝的過程中沒有改變安裝路徑)。此時在特權用戶下,系統工程師需要馬上切換到這個用戶的主目錄下,進行郵件的維護。此時,如果沒有這個~代字符的幫助,那麼系統工程師不得不先確認這個用戶的主目錄,然後再利用cd命令一層層的進去。顯然這個操作會比較麻煩。其實,在Unix操作系統中,有一種更加簡便的方法。如只需要在命令行中輸入,cd ~jussin,系統就會自動登錄到這個用戶的主目錄。所以說,我們把這個代字符用來表示用戶的主目錄。這筆剛才介紹的傳統操作要簡便許多。

當~符號後面不加用戶名,而直接加/符號後者不加任何內容的話,表示當前用戶的主目錄。如系統工程師往往需要修改用戶的配置文件,以達到某些目的。此時系統工程師需要使用vi命令來編輯這個配置文件,如vi $HOME/.profile。這個命令的含義就是打開當前用戶主目錄下面的.profile配置文件。在輸入這個命令的時候,HOME必須大寫,以為其代表的是環境變量。在輸入這個命令的時候,比較麻煩。一是需要使用$這個特殊符號,二是需要轉換大小寫模式。因為vi命令必須為小寫,而HOME環境變量必須為大寫。所以在輸入的時候有些不方便。其實此時系統工程師也可以利用~這個代字符來簡化輸入。如在這個代字符的幫助下,上面這個命令就可以簡化為vi ~/.profile即可。這可以就可以免除大小寫轉換的麻煩。

另外,我們還可以利用~代字符快速切換到當前用戶的主目錄。如cd ~就表示切換到當前用戶的主目錄。這使用起來非常的方便。另外,使用系統工程師還可以使用cd ~-命令,切換到最近一次進入的目錄中。也就是說,采用以上這兩個命令,可以快速的在最近使用的目錄與當前用戶主目錄之間進行切換。這對於日常的維護工作是非常方便的。有時候系統工程師在開發一些嵌入式程序的時候,也經常需要用到這兩個命令。因為其可以非常方便的實現在用戶主目錄與當前目錄之間的切換。所以說,這個~代字符其大部分系統工程師所忽視,其作用仍然不可小瞧。不過其有一個缺點,就是通用性不是很好。據筆者所知,並不是在所有的shell 中都支持這個代字符。如在Bourne shell中,就不支持這個代字符。如使用vi ~/.profile命令,會提示錯誤信息。所以這是這個代字符最大的缺陷。系統工程師在使用過程中,需要注意這個通用性的問題。如果不考慮這個問題的話,那麼這個代字符真的是一個很不錯的環境變量。

三、歷史變量的大小。

在shell中,我們按方向鍵,可以顯示最近幾次執行過的命令。有時候,我們需要重復執行某條命令進行測試,如果這個命令比較長的話,那麼歷史命令就會非常的有用。系統工程師只需要簡單的利用方向鍵找到先前執行過的命令,然後按回車鍵即可。如系統工程師可能編寫了一個文件備份的腳本程序。在編寫過程中,需要不斷的執行這個腳本程序以完善其功能。此時利用歷史命令功能就可以免除每次輸入命令的煩惱。

通常情況下,這個執行過的命令是保存在硬盤或者內存中的。隨著內存與硬盤價格的下降,系統工程師往往會在Unix服務器上配備比較大的硬盤與內存。為此系統工程師可以把這個歷史紀錄的文件設置為大一點,讓其保存更多的歷史命令。如系統工程師可以更改HISTSIZE這個環境變量,這個環境變量用來顯示內存中的歷史紀錄長度。而更改HISTFILESIZE這個環境變量,則可以修改保存在硬盤中的歷史紀錄文件的大小。

通常情況下,筆者建議大家修改這個兩個環境變量。因為其不但可以簡化系統工程師的輸入,而且還可以通過查看歷史紀錄來查詢以前對操作系統所進行的維護操作。這對於排除操作系統故障具有一定的意義。如果有必要的話,系統工程師還可以根據需要指定歷史紀錄保存的位置。如可以設置HISTFILE環境變量,來決定在硬盤上保存的歷史紀錄文件的位置與文件名。如果沒有設置這個環境變量的話,則默認情況下歷史紀錄文件是保存在用戶的主目錄下的。也就是說,每個用戶都有自己的歷史紀錄文件。在每個用戶的shell中執行的命令,都紀錄在各自的歷史紀錄文件中,彼此之間是不通用的。

這幾個環境變量雖然只用來實現一些特定的功能,但是其作用仍然是不可忽視的。合力設置這些環境變量,不僅可以提高文件的安全性,而且還可以在很大程度上方便我們的操作。為此筆者建議,如要再讓這些環境變量坐冷板凳了,應該盡量發揮這些環境變量的價值。讓我們的工作更加的輕松。

Copyright © Linux教程網 All Rights Reserved