bash shell 用一個稱作環境變量的特性存儲有關shell會話和工作環境的信息。
這也是他們爲什麼被稱作環境變量的原因,它允許你在內存中存儲數據,以便在運行在shell上的程序和腳本訪問。
這也是存儲永久數據的一種簡便方法,這些數據可以使用來識別用戶賬戶、系統、shell的特性以及任何其他你需要存儲的數據。
p101
全局環境變量和局部環境變量。
全局:哪都可見,在進入bash之前就已經存在了。 printenv 查看全局環境變量。
局部:只有當前shell進程可見。
Linux系統中,並沒有這樣一個命令只顯示局部環境變量。
set命令:會顯示爲某個特定進程設置的所有環境變量。當然,也包括全局環境變量。
設置環境變量
[root@localhost bin]# test=hellogood
[root@localhost bin]# echo $test
hellogood
警告:在環境變量名稱、等號和值之間沒有空格,這一點非常重要。
如果你在賦值表達式中放了空格,bash shell就會把值當做一個單獨的命令。
在另一個進程(包括子進程)中,是無法訪問的。
export :設置全局環境變量: export test
刪除環境變量: unset test,在處理全局環境變量時,如果你是在子進程裏面刪除了一個全局環境變量,它只對子進程有效。
有一些默認的shell環境變量。
PATH 變量同時顯示了shell查找命令的順序。
修改PATH: $PATH:bin/..
登陸shell會從4個不同的啓動文件裏讀取命令:
/etc/profile
$HOME/.profile
第一個是主啓動文件,系統上的每個用戶登陸都會執行這個啓動文件,另外三個啓動文件是用戶專有的,可以定製。
只要你登陸了Linux系統,bash就會執行/etc/profile文件中的命令。具體見 p115
交互式shell:
如果你的bash shell不是登錄時啓動的(比如你在命令行提示符下敲入bash啓動),你啓動的shell稱作交互式的shell。不會去訪問/etc/profile的,而是去HOME目錄查看.bashrc是否存在。
非交互式shell:系統執行shell腳本時用的就是這種shell。你不用擔心它沒有命令行提示符,但當你每次在系統上運行時仍要運行特定的啓動命令。(沒讀懂)
支持數組。但是不常用。
別名:alias -p
可以用alias 來創建自己的別名:
例如:alias li=‘ls -il’
命令別名的行爲和局部變量差不多,他們通常只在定義他們的shell進程中有效。
$HOME/.bashrc 是命名別名的好地方,因爲bash shell在啓動交互式shell時總是會讀取位於該地方的啓動文件。
看到了 P122 文件權限