bash shell用乙個稱作環境變數的特性來儲存有關shell會話和工作環境的資訊,它允許你在記憶體中儲存資料,以便執行在shell上的程式和指令碼訪問
在bash shell中,環境變數分為兩類:全域性變數和區域性變數
全域性環境變數不僅對shell會話可見,對所有shell建立的子程序中需要獲得父程序資訊的程式來說非常有用。linux系統在你開始bash會話之前就設定了一些全域性環境變數
系統環境變數的一律用全大寫字母以區別與普通使用者的環境變數
檢視全域性變數,可以使用printenv命令(由於結果太多,不寫出來)
要顯示單個環境變數,可以使用echo命令。當引用環境變數時,必須在環境變數的名稱前放置乙個$符:
wu@ubuntu:~/ccode$ echo $home
/home/wu
區域性環境變數只能在定義它們的程序中可見,檢視區域性環境變數的列表有點複雜,在linux系統中並沒有這樣的乙個命令只顯示區域性環境變數
set命令會顯示某個特定程序設定的所有環境變數,當然也包括全域性變數
一旦啟動了bash shell,你就能建立在這個shell程序內可見的區域性變數了,你可以通過等號來給環境變數賦值,值可以是數值或字串:
wu@ubuntu:~$ test=testing
wu@ubuntu:~$ echo $test
testing
如果要給變數賦乙個含有空格的字串,必須用單引號來界定字串的開始和結尾:
wu@ubuntu:~$ test=testing a long string
a: command not found
wu@ubuntu:~$ test='testing a long string'
wu@ubuntu:~$ echo $test
testing a long string
建立全域性環境變數的方法是先建立乙個區域性環境變數,然後再把它匯出到全域性環境中
這個過程通過export命令來完成:
wu@ubuntu:~$ echo $test
testing a long string
wu@ubuntu:~$ export test
wu@ubuntu:~$ bash
wu@ubuntu:~$ echo $test
testing a long string
可以使用unset命令來刪除環境變數:
wu@ubuntu:~$ echo $test
testing a long string
wu@ubuntu:~$ unset test
wu@ubuntu:~$ echo $test
wu@ubuntu:~$
1、bash :記錄當前bash shell的路徑。
2、bash_subshell :記錄當前子shell的層次。bash_subshell是從0開始計數的整數。
3、bash_versinfo :是乙個陣列包含六個元素,這六個元素顯示bash的版本資訊。
4、bash_version :顯示shell版本的資訊。
5、dirstack :記錄了棧頂的目錄值,初值為空。
6、globlgnore :是由冒號分割的模式列表,表示通配時忽略的檔名集合。
7、groups :記錄當前使用者所屬的組。
8、home :記錄當前使用者的家目錄,由/etc/passwd的倒數第二個域決定。
9、hostname :記錄主機名。
10、hosttype和machtype :都是記錄系統的硬體架構。
11、ifs :用於設定指定shell域分隔符,預設情況下為空格。
12、oldpwd :記錄舊的工作目錄。
13、ostype :記錄作業系統型別。
14、path :環境變數,顯示當前path環境變數的內容。
15、ppid :是建立當前程序的程序號,即當前程序的父程序號
16、ps1 :提示符變數,用於設定提示符格式,用於設定一級shell提示符環境變數。
17、ps2 :用於設定二級shell提示符環境變數。
18、pwd :記錄當前路徑
19、reply :reply變數與read和select有關。
20、seconds:記錄指令碼從開始到結束耗費的時間。
21、shell :顯示當前所用的shell
22、shellopts :記錄了處於「開」狀態的shell選項列表,它只是乙個唯讀變數。
23、shlvl :記錄了bash巢狀的層次,一般來說,我們啟動第乙個shell時。 $shlvl=1。如果在這個shell中執行指令碼,指令碼中的$shlvl=2 。
24、tmout :用來設定指令碼過期的時間,比如tmout=3,表示該指令碼3秒後過期。
25、uid : 已登使用者的id
26、user :顯示當前使用者名字
path定義了命令列輸入命令的搜素路徑,如果找不到命令,它會產生乙個錯誤:
wu@ubuntu:~$ myprog
myprog: command not found
可以新增新的搜素目錄到現有的path環境變數,無需從頭定義,path中的目錄之間是用冒號分隔的,所以你只需引用原來的path值,然後再給字串新增新的目錄就行
環境變數乙個很好的功能就是它們可作為陣列使用,要給某個環境變數設定多個值,可以把值放在括號裡,值與值之間用空格隔開:
wu@ubuntu:~$ mytest=(one two three four five)
wu@ubuntu:~$ echo $mytest
one只有第乙個值顯示出來了。要引用乙個單獨的陣列元素,必須用代表它在陣列中位置的數值索引值,數值要用方括號括起來:
wu@ubuntu:~$ echo $
three
要顯示整個陣列變數,可用星號作為萬用字元放在索引值的位置:
wu@ubuntu:~$ echo $
one two three four five
你也可以改變某個索引位置的值:
wu@ubuntu:~$ mytest[2]=seven
wu@ubuntu:~$ echo $
one two seven four five
你甚至可以用unset命令來刪除陣列中的某個值,但是要小心:
wu@ubuntu:~$ unset mytest[2]
wu@ubuntu:~$ echo $
one two four five
wu@ubuntu:~$ echo $
wu@ubuntu:~$ echo $
four
最後,可以在unset命令後跟上陣列名來刪除整個陣列:
wu@ubuntu:~$ unset mytest
wu@ubuntu:~$ echo $
wu@ubuntu:~$
linux環境程式設計 環境變數 列印環境變數
在shell程式設計主題中,我們已經大致的介紹過 環境變數和本地變數啦 我們今天來具體的介紹介紹,那環境變數到底是什麼呢?是我 一.環境變數含義 特徵 環境變數是指 作業系統中用來指定作業系統執行環境的一下引數 1 特徵 字串 有統一的格式 名 值 值 值用來描述程序的環境資訊 2 使用形式 與命令...
linux環境變數
初次學習lliux對環境變數的知識甚是不解決,特花費乙個上午的時間總結了一下,可以說是全面!如各位有更加詳細的見解不妨告知!定製環境變數 環境變數是和shell緊密相關的,使用者登入系統後就啟動了乙個shell。對於linux來說一般是bash,但也可以重新設定或切換到其它的 shell。環境變數是...
Linux環境變數
好吧,我承認這篇文章是轉的.1.顯示環境變數home echo home home redbooks 2.設定乙個新的環境變數hello export hello hello echo hello hello 3.使用env命令顯示所有的環境變數 env hostname redbooks.safe...