Linux /etc/profile文件詳解

linux /etc/profile文件的改變會涉及到系統的環境,也就是有關Linux環境變量的東西,學習Linux要了解Linux profile文件的相關原理,這裏對則以文件進行具體分析。這裏修改會對全部用戶起做用。linux

  一、Linux是一個多用戶的操做系統。每一個用戶登陸系統後,都會有一個專用的運行環境。一般每一個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。用戶能夠對本身的運行環境進行定製,其方法就是修改相應的系統環境變量。shell

  二、常在/etc/profile文件中修改環境變量,在這裏修改的內容是對全部用戶起做用的。如下主要操做將在該文件中進行。bash

  三、如何添加環境變量。eclipse

  例如添加」NAME=liheng「 。在profile文件的最後添加以下內容export NAME=lihengjvm

  變量值liheng能夠加引號也能夠不加,效果同樣。學習

  四、在profile文件添加或修改的內容須要註銷系統才能生效。操作系統

  五、重複定義變量怎樣理解。code

  常常出現的是對PATH變量的定義。ip

  例如:在peofile文件默認對PATH變量都有設置PATH=¥¥¥¥¥¥¥(記不住了),在之後可能在對PATH設置,通常都加在profile 文件的最後PATH=······(打個比方)。而系統之中認定的PATH=·······¥¥¥¥¥¥¥¥¥,也就是說相同名字的環境變量,後寫入的先起做用(通俗地講)。你們必定要注意。字符串

  六、特殊字符介紹。

  例如在profile中有以下內容,經過如下內容說明特殊符號的用法。

  export A=/q/jing:aaa/cc/ld

  export B=.:/liheng/wang export A=/cd/cdr:$A

  你們注意紅色的符號:

  : 表示並列含義,例如A變量值有多個,用:符號進行分離。

  . 表示你操做的當前目錄。例如pap命令會查找B環境變量。

  在/home鍵入pap命令,系統首先在/home目錄下(即當前路徑)查找關於 B 的內容,<a href="http://www.%3Ca%20class%3D/" channel_keylink"="" target="_blank" style="margin: 0px; padding: 0px; word-wrap: break-word; text-decoration: none; color: rgb(51, 51, 51);">linuxidc.com">www.linuxidc.com若是沒有在/liheng/wang目錄下查找關於B的內容。 表示該變量本次定義以前的值,例如

A表明/q/jing:aaa/cc/ld。也就是說 A=/cd/cdr:/q/jing:aaa/cc/ld

  七、使用env命令顯示全部的環境變量 。在命令提示符下鍵入env就好了。

  set命令顯示全部本地定義的Shell變量。

  八、常見的環境變量

  PATH:決定了shell將到哪些目錄中尋找命令或程序

  HOME:當前用戶主目錄

  MAIL:是指當前用戶的郵件存放目錄。

  SHELL:是指當前用戶用的是哪一種Shell。

  HISTSIZE:是指保存歷史命令記錄的條數。

  LOGNAME:是指當前用戶的登陸名。

  HOSTNAME:是指主機的名稱,許多應用程序若是要用到主機名的話,一般是從這個環境變量中來取得的。

  LANG/LANGUGE:是和語言相關的環境變量,使用多種語言的用戶能夠修改此環境變量。

  PS1:是基本提示符,對於root用戶是#,對於普通用戶是$。

  PS2:是附屬提示符,默認是「>」。能夠經過修改此環境變量來修改當前的命令符,好比下列命令會將提示符修改爲字符串「Hello,My NewPrompt 😃 」。

  # PS1=」 Hello,My NewPrompt 😃 「

  九、使用修改.bashrc文件(在用戶的家目錄下)進行環境變量的編輯,只對當前用戶有用。使用修改 /etc/profile 文件進行環境變量的編輯,是對全部用戶有用。你們必定要注意區別。

  十、Linux profile文件在系統啓動時將被運行。你們能夠在裏面加入其餘命令,可是必定要加正確,否則的話系統會啓動不起來的。

1./etc/profile , /etc/profile.d ,~/.bashrc, ~/.bash_file,這幾個文件的區別是啥,可能不少新人,很疑惑。即便不少配置一些軟件環境變量的人也是很疑惑

~/.bashrc, ~/.bash_file這兩個看到~這個符合,應該明白,這是宿主目錄下的,即裏面的環境變量也叫shell變量,是局部的,只對特定的shell有效,修改過別忘了source 命令一下。

/etc/profile , /etc/profile.d,前面的是文件,後面一看也就明白.d表示目錄, /etc/profile裏面的變量是全局的,對全部用戶的shell有效。

  1. 咱們每當在終端輸入命令,系統會有響應,最重要的就是搜索路徑啦,能夠經過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文件 這樣得到的效果一致,不信你本身試試。 而後,在對應的配置文件裏面添加你本身的配置就能夠了。

相關文章
相關標籤/搜索