shell環境變數以及set,env,export的區別

來源:互聯網
上載者:User

原文連結

一.shell環境變數的分類以及set env export的區別:

 

set:顯示(設定)shell變數 包括的私人變數以及使用者變數,不同類的shell有不同的私人變數 bash,ksh,csh每中shell私人變數都不一樣

env:顯示(設定)使用者變數變數

export:顯示(設定)當前置出成使用者變數的shell變數。

 

舉個例子來講:

  

[c-sharp] view plaincopy

 
  1. [oracle@zhou3 ~]$ aaa=bbb --shell變數設定     
  2. [oracle@zhou3 ~]$ echo $aaa      
  3. bbb     
  4. [oracle@zhou3 ~]$ env| grep aaa --設定完目前使用者變數並沒有     
  5. [oracle@zhou3 ~]$ set| grep aaa  --shell變數有     
  6. aaa=bbb     
  7. [oracle@zhou3 ~]$ export| grep aaa --這個指的export也沒匯出,匯出變數也沒有     
  8. [oracle@zhou3 ~]$ export aaa   --那麼用export 匯出一下     
  9. [oracle@zhou3 ~]$ env| grep aaa  --發現使用者變數記憶體在了     
  10. aaa=bbb  

 

 

總結:linux 分 shell變數(set),使用者變數(env), shell變數包含使用者變數,export是一種命令工具,是顯示那些通過export命令把shell變數中包含的使用者變數匯入給使用者變數的那些變數.

 

二:使用unset命令來清除環境變數,注意set env  export設定的變數,都可以用unset來清除的

 

[c-sharp] view plaincopy

 
  1. 清除環境變數的值用unset命令。如果未指定值,則該變數值將被 設為NULL。示  
  2. 例如下:    
  3. $ export TEST="Test..." #增加一個環境變數TEST    
  4. $ env|grep TEST #此命令有輸入,證明環境變數TEST已經存在了    
  5. TEST=Test...    
  6. $ unset $TEST #刪除環境變數TEST    
  7. $ env|grep TEST #此命令沒有輸出,證明環境變數TEST已經不存在了  

 

 

三:使用readonly命令設定唯讀變數

 

[c-sharp] view plaincopy

 
  1. 使用了readonly命令的話,變數就不可以被修改或清除了。樣本如下:  
  2. $ export TEST="Test..." #增加一個環境變數TEST  
  3. $ readonly TEST #將環境變數TEST設為唯讀  
  4. $ unset TEST #會發現此變數不能被刪除  
  5. -bash: unset: TEST: cannot unset: readonly variable  
  6. $ TEST="New" #會發現此也變數不能被修改  
  7. -bash: TEST: readonly variable  

 

 

四:最根本的設定、更改變數的設定檔 ~/.bash_profile   ~/.bashrc   ~/.bash_logout

~/.bash_profile  使用者登入時被讀取,其中包含的命令被執行

~/.bashrc  啟動新的shell時被讀取,並執行

~/.bash_logout  shell 登入退出時被讀取

 

此外,shell(這裡指bash)的初始化過程是這樣的:

1.bash 檢查檔案/etc/profile 是否存在

2. 如果存在,bash 就讀取該檔案,否則,跳過

3.bash 檢查主目錄下的檔案.bash_profile 是否存在。

4. 如果存在,bash 就讀取該檔案,否則,跳過

5.bash 檢查主目錄下的.bash_login 是否存在。

6. 如果存在,bash 就讀取該檔案,否則,跳過

7.bash 檢查主目錄下的檔案.profile 是否存在

8. 如果存在, bash 就讀取該檔案,否則,跳過。

這些步驟都執行完後,就出現提示符了, ksh 預設提示符是 $.

 

 

五:常見的shell變數

PATH 這個變數包含了一系列由冒號分隔開的目錄,系統就從這些目錄裡尋找可執行檔。如果你輸入的可執行檔(例如ls、rc-update或者emerge) 不在這些目錄中,系統就無法執行它(除非你輸入這個命令的完整路徑,如/bin/ls)。  
ROOTPATH 這個變數的功能和PATH相同,但它只羅列出超級使用者(root)鍵入命令時所需檢查的目錄。  
LDPATH 這個變數包含了一系列用冒號隔開的目錄,動態連結器將在這些目錄裡尋找庫檔案。 
MANPATH 這個變數包含了一系列用冒號隔開的目錄,命令man會在這些目錄裡搜尋man頁面。  
INFODIR 這個變數包含了一系列用冒號隔開的目錄,命令info將在這些目錄裡搜尋info頁面。  
PAGER 這個變數包含了瀏覽檔案內容的程式的路徑(例如less或者more)。  
EDITOR 這個變數包含了修改檔案內容的程式(檔案編輯器)的路徑(比如nano或者vi)。  
KDEDIRS 這個變數包含了一系列用冒號隔開的目錄,裡面放的是KDE相關的資料。 
CONFIG_PROTECT 這個變數包含了一系列用空格隔開的目錄,它們在更新的時候會被Portage保護起來。 
CONFIG_PROTECT_MASK 這個變數包含了一系列用空格隔開的目錄,它們在更新的時候不會被Portage保護起來。

 

 

PATH:決定了shell將到哪些目錄中尋找命令或程式
HOME:目前使用者主目錄
MAIL:是指目前使用者的郵件存放目錄。
SHELL:是指目前使用者用的是哪種Shell。
HISTSIZE:是指儲存曆史命令記錄的條數
LOGNAME:是指目前使用者的登入名稱。 
HOSTNAME:是指主機的名稱,許多應用程式如果要用到主機名稱的話,通常是從這個環境變數中來取得的。
LANG/LANGUGE:是和語言相關的環境變數,使用多種語言的使用者可以修改此環境變數。 
PS1:是基本提示符,對於root使用者是#,對於普通使用者是$。
PS2:是附屬提示符,預設是“>”。可以通過修改此環境變數來修改當前的命令符,比如下列命令會將提示符修改成字串“Hello,My NewPrompt ”。 
# PS1=" Hello,My NewPrompt "

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.