linux /etc/profile檔案的改變會牽涉到系統的環境,也就是有關Linux環境變數的東西,學習Linux要了解Linux profile檔案的相關原理,這裡對則以檔案進行具體分析。這裡修改會對所有用戶起作用。
1、Linux是一個多用戶的作業系統。每個使用者登入系統後,都會有一個專用的運作環境。通常每個使用者預設的環境都是相同的,這個預設環境其實就是一組環境變數的定義。使用者可以對自己的運作環境進行客製化,其方法就是修改對應的系統環境變數。
2、常在/etc/profile檔案中修改環境變量,這裡修改的內容是對所有使用者起作用的。以下主要操作將在該文件中進行。
3、如何加入環境變數。
例如新增」NAME=liheng「 。在profile檔案的最後加上如下內容export NAME=liheng
變數值liheng可以加引號也可以不加,效果一樣。
4、在profile檔案中新增或修改的內容需要登出系統才能生效。
5、重複定義變數怎麼理解。
常出現的是PATH變數的定義。
例如:在peofile檔案預設對PATH變數都有設定PATH=¥¥¥¥¥¥¥(記不住了),以後可能在對PATH設置,一般都加在profile 檔案的最後PATH=······(打個比方)。而係統之中認定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是說相同名字的環境變量,後寫入的先起作用(通俗地講)。大家一定要注意。
6、特殊字元介紹。
例如在profile中有以下內容,透過以下內容說明特殊符號的用法。
export A=/q/jing:aaa/cc/ld
# export B=.:/liheng/wang export A=/cd/cdr:$A
大家注意紅色的符號:
: 表示並列意義,例如A變數值有多個,用:符號進行分離。
. 表示你操作的目前目錄。例如pap指令會找B環境變數。
在/home鍵入pap指令,系統先在/home目錄下(即目前路徑)找出關於B 的內容,e4f8bb2685992f309e8423e5d94e80bblinuxidc. com">www.linuxidc.com如果沒有在/liheng/wang目錄下查找關於B的內容。 $ 表示該變數本次定義之前的值,例如$A代表/q/jing:aaa/cc/ld。也就是說 A=/cd/cdr:/q/jing:aaa/cc/ld
7、使用env指令顯示所有的環境變數 。在命令提示字元下鍵入env就行了。
set指令顯示所有本機定義的Shell變數。
8、常見的環境變數
PATH:決定了shell要尋找哪些目錄中尋找指令或程式
HOME:目前使用者主目錄
MAIL:是指目前使用者的郵件存放目錄。
SHELL:是指目前使用者用的是哪一種Shell。
HISTSIZE:是指儲存歷史指令記錄的條數。
LOGNAME:是指目前使用者的登入名稱。
HOSTNAME:是指主機的名稱,許多應用程式如果要用到主機名稱的話,通常是從這個環境變數中來取得的。
LANG/LANGUGE:是和語言相關的環境變量,使用多種語言的使用者可以修改此環境變數。
PS1:是基本提示符,對於root使用者是#,對於一般使用者是$。
PS2:是附屬提示符,預設是「>」。可以透過修改此環境變數來修改目前的命令符,例如下列命令會將提示符號修改成字串「Hello,My NewPrompt :) 」。
# PS1=” Hello,My NewPrompt :) “
9、使用修改.bashrc檔案(在使用者的家目錄下)進行環境變數的編輯,只對目前使用者有用。使用修改 /etc/profile 檔案進行環境變數的編輯,是對所有使用者有用。大家一定要注意差別。
10、Linux profile檔案在系統啟動時將會運作。大家可以在裡面加入其他指令,但一定要加正確,不然的話系統會啟動不起來的。
續
#/etc/profile , /etc/profile.d ,~/.bashrc, ~/.bash_file,這幾個檔案的差別是啥,可能很多新人,很懷疑。即使很多配置一些軟體環境變數的人也是很疑惑
~/.bashrc, ~/.bash_file這兩個看到~這個符合,應該明白,這是宿主目錄下的,也就是裡面的環境變數也叫shell變量,是局部的,只對特定的shell有效,修改過別忘了source 指令一下。
/etc/profile , /etc/profile.d,前面的是文件,後面一看也就明白.d表示目錄, /etc/profile裡面的變數是全域的,對所有使用者的shell有效。
我們每當在終端機輸入指令,系統會有回應,最重要的就是搜尋路徑啦,可以透過echo $PATH看到,系統所以指令的搜尋路徑,以:符合分開。
當我們下載一個軟體,如果我們希望不加入路徑就能啟動該程序,如在shell中任意位置輸入eclipse,即啟動程序,我們就可以把eclipse程序的可執行程式的路徑加入PATH中即可。
其實我們還可以有另一個方法,請看如下程式碼
# The default umask is now handled by pam_umask. # See pam_umask(8) and /etc/login.defs. if [ -d /etc/profile.d ]; then # 判断/etc/profile.d 是不是一个目录 for i in /etc/profile.d/*.sh; do #如果是一个目录,到该目录下,取出每一个shell程序 if [ -r $i ]; then #如果该shell可以执行 . $i # 则执行它 fi done unset i fi
改程式碼是/etc/profile中的部分內容,說明/etc/profile會先執行/etc/ profile.d/目錄下的所有*.sh檔。這也就給我們一個可擴展的思路。如果我們需要設定JDK,那麼就在/etc/profile.d/下建立jvm.sh檔案如果需要設定ant,那麼就在/etc/profile.d/下建立ant.sh檔案
這樣得到的效果一致,不信你自己試試。
然後,在對應的設定檔裡面加入自己的設定就可以了。