環(huán)境變量
查看環(huán)境變量命令
命令 | 功能 |
---|---|
env和printenv | 不會(huì)對(duì)變量進(jìn)行排序,也不會(huì)輸出局部變量和用戶定義變量 |
set | 會(huì)顯示出全局變量灵疮、局部變量以及用戶定義變量。它還會(huì)按照字母順序?qū)Y(jié)果進(jìn)行排序 |
設(shè)置全局環(huán)境變量
在設(shè)置全局環(huán)境變量的進(jìn)程所創(chuàng)建的子進(jìn)程中着饥,該變量都是可見(jiàn)的蝠咆。創(chuàng)建全局環(huán)境變量的方法是先創(chuàng)建一個(gè)局部環(huán)境變量,然后再把它導(dǎo)出到全局環(huán)境中贰健。
這個(gè)過(guò)程通過(guò)export命令來(lái)完成胞四,變量名前不需要加$。
修改子shell中全局環(huán)境變量并不會(huì)影響到父shell中該變量的值伶椿。
子shell甚至無(wú)法使用export命令改變父shell中的全局環(huán)境變量的值辜伟。
$ my_variable="I am man"
$ export my_variable
$
$ echo $my_variable
I am man
$
$ bash
$
$ echo $my_variable
I am man
$
$my_variable="Null"
$
$export my_variable
$
$echo $my_variable
Null
$
$exit
exit
$
$ echo $my_variable
I am man
$
刪除環(huán)境變量
用unset命令刪除氓侧,不用使用$,如果在子進(jìn)程里刪除變量并不會(huì)對(duì)父進(jìn)程有影響。
$ echo $my_variable
I am man
$
$ unset my_variable
$
$ echo $my_variable
$
竅門: 如果要用到變量导狡,使用$;如果要操作變量约巷,不使用$。這條規(guī)則的一個(gè)例外就是使用printenv顯示某個(gè)變量的值旱捧。
定位系統(tǒng)環(huán)境變量
登錄shell
登錄shell會(huì)從5個(gè)不同的啟動(dòng)文件里讀取命令:
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
- /etc/profile
/etc/profile文件是bash shell默認(rèn)的主啟動(dòng)文件独郎。 - $HOME目錄下的啟動(dòng)文件
shell會(huì)按照下列順序,運(yùn)行第一個(gè)被找到的文件枚赡,余下的則被忽略氓癌。
- $HOME/.bash_profile
** $HOME/.bash_login - $HOME/.profile
沒(méi)有$HOME/.bashrc文件,是因?yàn)樵撐募ǔMㄟ^(guò)其他文件運(yùn)行的贫橙。