Linux /etc/profile文件詳解

Linux/etc/profile文件的改變會涉及到系統的環境,也就是有關Linux環境變量的東西,學習Linux要了解Linuxprofile文件的相關原理,這裏對則以文件進行具體分析。這裏修改會對所有用戶起作用。
  1、Linux是一個多用戶的操作系統。每個用戶登錄系統後,都會有一個專用的運行環境。通常每個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。用戶可以對自己的運行環境進行定製,其方法就是修改相應的系統環境變量。
  2、常在/etc/profile文件中修改環境變量,在這裏修改的內容是對所有用戶起作用的。以下主要操作將在該文件中進行。
  3、如何添加環境變量。
  例如添加”NAME=liheng“ 。在profile文件的最後添加如下內容exportNAME=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的內容,linuxidc.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,MyNewPrompt :) ”。
  # PS1=” Hello,My NewPrompt :) “
  9、使用修改.bashrc文件(在用戶的家目錄下)進行環境變量的編輯,只對當前用戶有用。使用修改/etc/profile 文件進行環境變量的編輯,是對所有用戶有用。大家一定要注意區別。
  10、Linuxprofile文件在系統啓動時將被運行。大家可以在裏面加入其他命令,但是一定要加正確,不然的話系統會啓動不起來的。






兩個重要的profile文件
在UNIX/Xenix系統中有兩個對用戶而言必不可少的文件——etc目錄下的profile文件和
用戶主目錄($HOME)下的.profile文件。前者是系統文件,對系統下全體用戶起作用,後者是
用戶自己的"私人"文件。
這兩個文件的功能類似於DOS系統下的Autoexec.bat文件,不同之處在於Autoexec.bat文
件可以爲空,而這兩個文件內容不僅不能爲空,而且必須存在。它們在用戶登錄(Login註冊)
時,被系統自動執行,爲用戶設置工作環境,若使用得當,可發揮強大作用。
etc目錄下的profile文件是每一個用戶登錄時,操作系統首先執行的文件,然後再將控制
權交給用戶主目錄下的.profile文件,當系統給出主提示符($PS1)後,用戶就可以開始自己的
工作了。以上全過程對用戶而言是透明的。
/etc/profile文件的主要功能包括:顯示UNIX/Xenix版本信息或者系統專用應用程序的
提示信息,設置掩碼(umask),對終端和郵箱(mail box)進行處理,對非root用戶禁止使用new
s命令等。
因爲/etc/profile文件的作用範圍是全體用戶,所以非共性的設置應放在用戶自己的.p
rofile文件中。下面就詳細講述.profile文件。
.profile是隱含文件,普通的列目錄命令(l、ls、lf,ls-l等)顯示不出該文件。UNIX/X
enix系統所有隱文件前都有"."符。
顯示UNIX/Xenix系統中的隱含文件屬性用以下命令:
$l - a
原始的.profile文件是系統管理員使用Sysadmsh命令或mkdev user命令創建用戶時,系
統爲該用戶自動生成的,用戶可使用vi編輯該文件爲自己所用。.profile文件產生的效用直
至用戶退出系統後才消失,而當用戶重新登錄時,又開始發揮作用。
設置終端類型
用戶使用UNIX/Xenix系統時可能會遇到這樣一個現象:每次登錄後,系統會要求用戶敲入
終端類型,然後在用戶輸入相應信息後,纔給出提示符。這是爲什麼呢?
原來在原始.profile文件中有這樣一個語句:
eval ‘test -m ansi:ansi -m:${TERM:ansi}-r -s -Q’
該語句的作用是要求用戶敲入所使用終端的類型並進行測試。
如果我們在.profile文件中加入以下命令:
TERM=terminal-name
TERM變量指明終端類型。
如:TERM=vt100,並且註釋掉eval語句。這樣處理以後,用戶再註冊時,就無需敲入終端類
型了。
定義PATH變量
該變量類似於DOS系統的PATH變量,其格式如下:
PATH=$PATH:$HOME/bin:/usr/informix/bin:.
說明:

1.該語句未尾的"·"表示當前路徑,不可缺少;

2.不同路徑間用":"隔開;

3.$PATH是系統中提供的默認變量,其初始值爲/bin:/usr/bin;

4.路徑的順序是很重要的,前後次序不宜隨便顛倒。比如用戶自編了一個與系統命
令同名的可執行文件,並將其放在$HOME下,並且打算使用這個命令而不是系統提供的同
名命令,那麼PATH應設置爲:
PATH=$HOME/bin:$PATH:/usr/informix/bin:.
因爲,若不同路徑下有相同的命令或可執行文件,則以第一個路徑下的爲準。這時,SHEL
L先搜索$HOME/bin路徑,發現其下的這個可執行文件,就爲用戶調用,而不會再運行/bin或者
/usr/bin下的標準同名命令了。
設置提示符
用戶可以將PS1(主提示符)、PS2(輔助提示符)改爲更受歡迎的形式。通常情況下,以超
級用戶登錄時,主提示符爲"#",其它用戶爲"$",PS2一般爲"<"。修改提示符的方法如下:
格式:PS1="$LOGNAME> "
說明:將主提示符由默認值改爲用戶註冊名。
使用stty命令重設終端配置

1.對數據傳輸方式進行設置
如:對奇偶校驗位、波特率(bps)大小、停止位位數進行重新設置。

2.字符處理
例1:stty nl
系統只接受字符作爲換行符。
例2:stty-nl
系統以(RETURN)字符做爲換行符。
例3:stty echo
置擊鍵後屏幕回顯。
例4:stty-echo
置擊鍵後,屏幕無顯示方式。

3.特殊鍵定義
例1:
stty erase escape #置抹除鍵(erase)爲escape鍵
重置抹除鍵鍵值,缺省值爲"#"。
例2:
stty kill delete #置刪行符(kill)爲delete鍵
重置刪行符,缺省值爲"@"。
例3:
stty eof ctrl-D #置文件結束符(eof)爲ctr-D鍵
重置文件結束符。
例4:
stty intr ctrl-C #中斷鍵可中止系統中絕大多數前臺進程,是很重要的終端參數
重置終端中斷鍵爲ctrl-C鍵。

4.其它常用stty命令
例1:stty sane ctrl-J
若終端功能發生紊亂,可用該命令來重置終端設置,使之恢復其出廠參數。該命令以"ct
rl-J"作爲行結束符,因爲在終端參數紊亂的情況下,RETURN鍵的功能很可能已經失效,而ctr
l-J命令是系統提供的強行回車鍵,在絕大多數情況下不會失效。
例2:stty -a
該命令可以顯示出終端的所有參數。
以上stty命令是UNIX系統提供的,可隨時使用,用戶可據自己的需要在.profile文件中設
定。
用戶自定義SHELL變量
用戶自定義SHELL變量是很有用的,使用情況也很廣泛。其功能有些類似於C語言的宏定
義(#define)。最常見的情況是將自己常去的而且很深的路徑自定義爲一個固定變量,放在.
profile文件中。
如:ML=/usr/work/source/firstml/secoudml
這時,若用戶在主提示符($PS1)下鍵入:
$>cd $ML
$>pwd # 顯示當前路徑
屏幕顯示當前路徑爲:/usr/work/source/firstml/secondml。
需注意的是:無論使用SHELL專用變量還是自定義變量,均需在變量(大寫拼寫)前加上"$
"符。並且,在定義完所有變量後,需在.profile中使用export語句,它的作用是將變量設置在
SHELL環境中,以在任意路徑下使用。
如:export SHELL ML TERM PATH MAIL PS1
使用Shell內部命令
用戶可在.profile文件內使用SHELL內部命令和操作系統命令,Shell常用命令見下表。
@@28173000.GIF;表1@@
.profile文件在Client/Server結構中的應用
在Client/Server結構下,Server總是時刻在運行的,不斷地接收Cleint發來的請求,處理
完後向Client發回某些信息。我們指定由server用戶來啓動server守候進程,特別需要注意
的是,該進程的父進程需設爲系統起始進程(init進程),脫離所屬終端。否則當server用戶從
該終端退出後,該進程就變成了無法控制的"殭屍"進程。
因此,在server用戶的.profile文件中加上如下設置:
$HOME/bin/server >>/tmp/server.tmp 2> &1
說明:

1."&"符號的作用是使系統將進程作爲後臺進程處理。

2."2"的作用。
SHELL在執行一個UNIX命令時,自動打開三個文件:stdin(標準輸入)、stdout(標準輸出
)、stderr(標準錯誤),文件描述字分別是0、1、2。所以,上面語句中的"2"表示標準錯誤的
文件描述字。將server進程的錯誤信息重定向到/tmp/sever.tmp文件中,而不是stdout上,這
樣處理後既不會干擾前臺工作,而且用戶可隨時瀏覽/tmp/server.tmp文件及時發現錯誤,便
於程序調試,一舉兩得。對於後臺進程,一般都要將其結果重定向到某固定文件中。

3.由於UNIX系統是多用戶、多任務、分時處理系統,所以不排除許多用戶以server用戶
註冊,因此其.profile文件會被執行許多次,因之server進程也會被啓動許多次,這種情況是
有害的,所以我們作以下修改:
if ps -ef| grep "server" >/dev/null
then echo"server already running……"
else
echo "server is running..."
$HOME/bin/server >> /tmp/server.tmp 2>&1
sleep 5
fi
對所有UNIX/Xenix系統守侯進程都可按上述處理。
發佈了21 篇原創文章 · 獲贊 19 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章