一、Linux之profile

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

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

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

  三、如何添加環境變量。學習

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

  變量值liheng能夠加引號也能夠不加,效果同樣。操作系統

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

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

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

  例如:在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的內容,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,MyNewPrompt :) 」。

  # PS1=」 Hello,My NewPrompt :) 「

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

  十、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、一、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系統守侯進程均可按上述處理。

相關文章
相關標籤/搜索