歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

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

shell環境變量以及set,env,export的區別   一.shell環境變量的分類以及set env export的區別:   set:顯示(設置)shell變量 包括的私有變量以及用戶變量,不同類的shell有不同的私有變量 bash,ksh,csh每中shell私有變量都不一樣 env:顯示(設置)用戶變量變量 export:顯示(設置)當前導出成用戶變量的shell變量。   舉個例子來講:    [c-sharp] [oracle@zhou3 ~]$ aaa=bbb --shell變量設定      [oracle@zhou3 ~]$ echo $aaa       bbb      [oracle@zhou3 ~]$ env| grep aaa --設置完當前用戶變量並沒有      [oracle@zhou3 ~]$ set| grep aaa  --shell變量有      aaa=bbb      [oracle@zhou3 ~]$ export| grep aaa --這個指的export也沒導出,導出變量也沒有      [oracle@zhou3 ~]$ export aaa   --那麼用export 導出一下      [oracle@zhou3 ~]$ env| grep aaa  --發現用戶變量內存在了      aaa=bbb     總結:linux 分 shell變量(set),用戶變量(env), shell變量包含用戶變量,export是一種命令工具,是顯示那些通過export命令把shell變量中包含的用戶變量導入給用戶變量的那些變量.   二:使用unset命令來清除環境變量,注意set env  export設置的變量,都可以用unset來清除的 [c-sharp] 清除環境變量的值用unset命令。如果未指定值,則該變量值將被 設為NULL。示   例如下:     $ export TEST="Test..." #增加一個環境變量TEST     $ env|grep TEST #此命令有輸入,證明環境變量TEST已經存在了     TEST=Test...     $ unset $TEST #刪除環境變量TEST     $ env|grep TEST #此命令沒有輸出,證明環境變量TEST已經不存在了     三:使用readonly命令設置只讀變量 [c-sharp] 使用了readonly命令的話,變量就不可以被修改或清除了。示例如下:   $ export TEST="Test..." #增加一個環境變量TEST   $ readonly TEST #將環境變量TEST設為只讀   $ unset TEST #會發現此變量不能被刪除   -bash: unset: TEST: cannot unset: readonly variable   $ TEST="New" #會發現此也變量不能被修改   -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 :) "  
Copyright © Linux教程網 All Rights Reserved