AIX環境變數簡介及使用 [plain] 環境變數是作業系統環境設定的變數,適用於整個系統的使用者進程; 環境變數可以在命令中設定,但是使用者登出的時候將會丟失這些設定值; 若要重複適用,則最好在.profile中定義;環境變數的使用與本地變數的使用方法相同, 但是在使用之前,必須用export命令匯出。 www.2cto.com 1.設定環境變數 同一行鍵入2個語句,使用分號隔開 VARIABLE-NAME=value; export VARIABLE-NAME 也可以分行寫: VARIABLE-NAME=value export VARIABLE-NAME 2.查看環境變數:env 3.清除環境變數:unset VARIABLE-NAME 4.嵌入shell變數 4.1 CDPATH:此變數保留了一些目錄資訊,用冒號“:”隔開。 如果設定了此變數,在cd一個目錄的時候,shell會先去尋找此變數儲存的值; 如果此變數中儲存了cd切換的目錄,則切換到該目錄下。 www.2cto.com 4.2 EXINIT:此變數儲存使用vi編輯器的初始化選項,如顯示行號,並在第10個空格加入tab鍵, 命令為:EXINIT='set nu tab=10';export EXINIT 4.3 HOME:HOME目錄,通常用於定位passwd檔案的倒數第2列,指定使用者登入後進入自己的目錄, 在這個目錄下儲存使用者自己的檔案資訊。當輸入:cd $HOME時,就切換到使用者的跟目錄下。 www.2cto.com 4.4 IFS:用於shell指定的預設域分隔字元;預設域分隔字元可以為:空格、新行、tab鍵。 4.5 LOGNAME:儲存登入名稱 4.6 MAIL:儲存郵箱路徑名,預設為/var/spool/mail/<login-name>。 4.7 MAILCHECK:預設為沒60s檢查新郵件,可以設定為其他時間,如180s。 4.8 MAILPATH:儲存多個使用者的郵箱路徑,設定此變數將覆蓋MAIL的值。 4.9 PATH:儲存進行命令或指令碼尋找的目錄順序,對這些目錄的排序很重要, 因為這關係到執行命令查詢時間問題;通常我們都是先從使用者根目錄下去查詢,在到其他目錄下。 4.10 PS1:基本提示符,超級使用者為#,普通使用者可以任意設定。 4.11 PS2:附屬提示符,預設“>”,用於執行多行命令或超過一行的一個命令。 4.12 SHELL:儲存預設shell,通常在/etc/passwd中設定,可以進行修改,使用其他shell。 www.2cto.com 4.13 TERMINFO:終端初始設定變數儲存終端設定檔的位置。 4.14 TERM:儲存終端類型,設定TERM是應用獲知終端對螢幕和鍵盤響應的控制序列類型, 如vt100、vt200等 4.15 TZ:儲存時區值,只有系統管理員才可以更改此設定。 5.其他環境變數 還有其他一些預留的環境變數,其他系統或命令列應用將用到他們,如: 5.1 EDITOR:設定編輯器,這個比較常用。 5.2 PWD:儲存當前工作路徑名。 5.3 PAGER:儲存螢幕翻頁命令,如pg、more 5.4 MANPATH:儲存系統上man檔案的目錄,各個目錄之間用“:”隔開。 5.5 LPDEST或PRINTER:儲存預設印表機名,用於列印工作是指定印表機名。 6.set命令 在$HOME.profile檔案中,設定環境變數時,除了export可以匯出之外,還有set -a命令, 可以指明所有變數直接被匯出;不過別在/etc/profile中設定,在自己的$HOME.profile中設定。 下面是一個shell指令碼的執行個體 在father.sh指令碼中,調用child.sh指令碼,並修改father.sh中的變數值,如下: pg father.sh # father script echo "This is the father" SMART_PHONE="iPhone 5" echo "I have the phone:$SMART_PHONE" # call the child script sh child.sh echo "The phone father owned is:$SMART_PHONE" pg child.sh # child echo "called from father..i am the child" echo "phone is:${SMART_PHONE:-unknow}" SMART_PHONE="Meizu MX2" echo "changing SMART_PHONE to:$SMART_PHONE" 執行指令碼: sh father.sh This is the father I have the phone:iPhone 5 called from father..i am the child phone is:unknow ->①不認識父進程中的變數 changing SMART_PHONE to:Meizu MX2 The phone father owned is:iPhone 5 可以看到,在子進程中並不認識父進程中的變數,這是因為我們沒在父進程中匯出變數值。 www.2cto.com 修改father.sh指令碼: pg father.sh # father script echo "This is the father" SMART_PHONE="iPhone 5" echo "I have the phone:$SMART_PHONE" # call the child script export SMART_PHONE ->② sh child.sh echo "The phone father owned is:$SMART_PHONE" 現在執行修改後的指令碼,子進程認識父進程傳遞過來的變數了: sh father.sh This is the father I have the phone:iPhone 5 called from father..i am the child phone is:iPhone 5 ->①匯出之後,認識了 changing SMART_PHONE to:Meizu MX2 The phone father owned is:iPhone 5 --the end--