在 linux系統 下,如果你下載並安裝了應用程式,很有可能在鍵入它的名稱時出現“ command not found ”的提示內容。如果每次都到安裝目標檔案夾內,找到可執行檔來進行操作就太繁瑣了。這涉及到環境變數 PATH 的設定問題,而 PATH 的設定也是在 linux 下定製環境變數的一個組成部分。
Linux 是一個多使用者的作業系統。每個使用者登入系統後,都會有一個專用的運行環境。通常每個使用者預設的環境都是相同的,這個預設環境實際上就是一組環境變數的定義。使用者可以對自己的運行環境進行定製,其方法就是修改相應的系統內容變數。
環境變數是和 Shell 緊密相關的,使用者登入系統後就啟動了一個 Shell 。對於 Linux 來說一般是 bash ,但也可以重新設定或切換到其它的 Shell 。根據發行版本的情況, bash 有兩個基本的系統級設定檔: /etc/bashrc 和 /etc/profile 。這些設定檔包含兩組不同的變數: shell 變數和環境變數。前者只是在特定的 shell 中固定(如 bash ),後者在不同 shell 中固定。很明顯,
shell 變數是局部的,而環境變數是全域的。環境變數是通過 Shell 命令來設定的,設定好的環境變數又可以被所有目前使用者所啟動並執行程式所使用。對於 bash 這個 Shell 程式來說,可以通過變數名來訪問相應的環境變數,通過 export 來設定環境變數。
具體方法總結(方便忘了尋找):
1. 在/etc/profile檔案中添加變數,對所有使用者生效(永久的)Linux變數可分為兩類:需要修改設定檔,變數永久生效。使用export命令列聲明即可,變數在關閉shell時失效。
用VI在檔案/etc/profile檔案中增加變數,該變數將會對Linux下所有使用者有效,並且是“永久的”。例如:編輯/etc/profile檔案,添加CLASSPATH變數# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
註:修改檔案後要想馬上生效還要運行# source /etc/profile不然只能在下次重進此使用者時生效。
2. 在使用者目錄下的.bash.profile檔案中增加變數,對單一使用者生效(永久的)。
用VI在使用者目錄下的.bash.profile檔案中增加變數,改變數僅會對目前使用者有效,並且是“永久的”。
例如:編輯guok使用者目錄(/home/guok)下的.bash.profile
# vi /home/guok/.bash.profile
添加如下內容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
註:修改檔案後要想馬上生效還要運行#source /home/guok/.bash_profile不然只能在下次重進此使用者時生效。
3. 直接運行export命令定義變數,只對當前shell(BASH)有效(臨時的)。
在shell的命令列下直接使用[export變數名=變數值]定義變數,該變數只在當前的shell(BASH)或其子shell(BASH)下是有效,shell關閉了,變數也就失效了,再開啟新shell時就沒有這個變數,需要使用的話還需要重新定義。
4.Linux給大家提供了自動化佈建環境變數的方法,那就是更改 .bashrc 檔案。 一般說來,有兩個檔案可以提供這種“進入系統時自動化佈建”的功能,一個是 /etc/bashrc,另一個是 ~/.bashrc。其中/etc/bashrc是被每個使用者執行的,而~/.bashrc只被目前使用者執行。所以/etc/bashrc只有root使用者能更改,而~/.bashrc是各個使用者私人的檔案。 "~"指的是使用者的home目錄。在建立使用者時,Linux會為其分配一個目錄以供該使用者使用。比如對"hjk41",該目錄
是"/home/hjk41"。一般使用者只能更改這個目錄裡的檔案,這樣各個使用者之間不會互相干擾。因而 ~/.bashrc檔案在這裡就是 "/home/hjk41/.bashrc",如果有另外一名叫"hjk42"的使用者,那麼他的 .bashrc檔案就是 "/home/hjk42/.bashrc"。
這樣,各個使用者有自己獨立的".bashrc"檔案,可以根據需要自行更改,而不會互相干擾。 /etc/bashrc檔案則是共用的,整個Linux中只有一份。一般來說,使用者的"~/.bashrc"開頭都會調用/etc/bashrc,因此更改/etc/bashrc會影響到所有使用者,這個檔案一般是root使用者管理的。
總之,Linux在使用者登入時,會執行相應的.bashrc檔案,比如我登入時,就會執行 /home/hjk41/.bashrc ,而這個檔案先調用 /etc/bashrc。下面是一個簡單的 .bashrc: if [ -f /etc/bashrc ]; then . /etc/bashrc fi export PATH=$PATH:/home/hjk41/bin 前面三行的意思是“如果/etc/bashrc這個檔案存在,那麼就執行它”,最後一行是我自己加的,用於修改PATH變數。這樣每次登入時,環境變數PATH都會自動修改為我需要的樣子。
"env" 列出所有環境變數 "source ~/.bashrc" 在更改.bashrc檔案後,執行條命令可以使更改立即生效(否則要等下次登入才能看到效果)。
(以上整理自網路多種資源進行總結綜合,請總重原作者成果,謝謝)。