Linux環境變量 shell
環境變量(environment variable)
環境變量是在bash shell 的一個特性,用來存儲系統信息、臨時數據以及配置信息。在bash shell中,環境變量可分爲兩類:全局變量和局部變量。
數組
做用範圍:當前shell進程及其子shell進程bash
查看全局環境變量:ide
查看全部全局環境變量:env或printenv函數
查看個別環境變量:printenv VARNAME命令行
echo $VARNAME排序
設置全局環境變量:export 命令用於導出一個局部環境變量到全局環境中繼承
export VARNAME=VALUE 或 export VARNAME(此時VARNAME爲一個已經存在的局部環境變量)索引
注:父shell建立的全局環境變量在子shell中有效,但子shell建立和修改(包括刪除)全局變量都不會反映到父shell中。three
做用範圍:當前shell進程
查看局部環境變量:set (此命令會顯示全部環境變量,包括全局變量、局部變量以及用戶自定義變量,此外,顯示結果還會按字母順序排序)
設置局部用戶定義環境變量:VARNAME=VALUE
若VALUE含有空格,則需用引號括起來:VARNEME=「VALUE」
unset命令用於刪除已經存在的環境變量:unset VARNAME
注:在涉及環境變量名時,什麼若是要用到變量,就要使用$;若是要操做變量,不使用$(printenv命令除外)。
PATH環境變量定義了用於進行命令和程序查找的目錄,其中的路徑用:隔開。當在shell命令行界面輸入一個外部命令時,shell會從PATH變量定義的路徑中依次查找,直到找到對應程序。
zhyd@zhyd-Inspiron-5590:~$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
若是命令或程序的位置沒有包含在PATH變量中,那麼不使用絕對路徑的話,shell是無法找到的。能夠將可執行文件的路徑添加到PATH變量中以便在目錄的任何位置都能直接執行:
PATH=$PATH:/DIR1/DIR2...
一個執行當前目錄下可執行文件的便捷方法是將當前目錄(.)添加到PATH中:
PATH=$PATH:.
系統環境變量是持久化的環境變量,所以是位於bash配置文件中的變量。
要實現環境變量的持久化,可修改shell的變量配置文件,如在/etc/profile.d 下建立一個以 .sh結尾的文件,保存新的或修改過的環境變量;或修改 $HOME/.bashrc 永久存儲我的用戶設置。
啓動bash shell的方式有三種:登陸時做爲默認登陸shell、做爲非登陸shell的交互式shell、做爲運行腳本的非交互式shell。
當用戶以登陸方式啓動一個bash shell時,bash會在幾個文件中查找命令.
/etc/profile: bash shell 的主啓動文件。只要登陸了Linux,bash就會執行其中的命令;
/etc/bash.bashrc: 包含了系統環境變量;
/etc/profile.d : 是一個目錄,其中包含了不一樣shell和系統特定應用的配置文件;
$HOME目錄下的啓動文件:提供一個用戶專屬的啓動文件來定義該用戶所用到的環境變量。Linux會用到其中的1~2個.在用戶登陸時,會運行第一個被找到的文件,餘下的則被忽略。
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
注:$HOME下還有一個.bashrc文件,其爲用戶提供了存放命令別名和私有腳本函數的地方。其執行是經過其餘文件來執行的,如.bash_profile。
交互式shell不會訪問/etc/profile 文件,只會檢查HOME目錄下的.bashrc文件。
系統執行shell腳本的方式是非交互式的。
交互式shell執行命令的方式有兩種:
1.經過BASH_ENV環境變量來查看要啓動的文件;
2.使用當前shell的環境變量或繼承父shell 的環境變量。
數組是存儲多個值的變量,賦值時用空格隔開,全部值用括號括起來。
mytest=(one two three four five)
使用某個環境變量須要索引值(從0開始),索引值用方括號括起來。索引值支持通配。
echo ${mytest[2]} three echo ${mytest[*]} one two three four five