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--