linux /etc/profile文件,linux系统中/etc/profile和.profile的介绍
兩個重要的profile文件
在UNIX/Xenix系統(tǒng)中有兩個對用戶而言必不可少的文件——etc目錄下的profile文件和
用戶主目錄($HOME)下的.profile文件。前者是系統(tǒng)文件,對系統(tǒng)下全體用戶起作用,后者是
用戶自己的"私人"文件。
這兩個文件的功能類似于DOS系統(tǒng)下的Autoexec.bat文件,不同之處在于Autoexec.bat文
件可以為空,而這兩個文件內容不僅不能為空,而且必須存在。它們在用戶登錄(Login注冊)
時,被系統(tǒng)自動執(zhí)行,為用戶設置工作環(huán)境,若使用得當,可發(fā)揮強大作用。
etc目錄下的profile文件是每一個用戶登錄時,操作系統(tǒng)首先執(zhí)行的文件,然后再將控制
權交給用戶主目錄下的.profile文件,當系統(tǒng)給出主提示符($PS1)后,用戶就可以開始自己的
工作了。以上全過程對用戶而言是透明的。
/etc/profile文件的主要功能包括:顯示UNIX/Xenix版本信息或者系統(tǒng)專用應用程序的
提示信息,設置掩碼(umask),對終端和郵箱(mail box)進行處理,對非root用戶禁止使用new
s命令等。
因為/etc/profile文件的作用范圍是全體用戶,所以非共性的設置應放在用戶自己的.p
rofile文件中。下面就詳細講述.profile文件。
.profile是隱含文件,普通的列目錄命令(l、ls、lf,ls-l等)顯示不出該文件。UNIX/X
enix系統(tǒng)所有隱文件前都有"."符。
顯示UNIX/Xenix系統(tǒng)中的隱含文件屬性用以下命令:
$l - a
原始的.profile文件是系統(tǒng)管理員使用Sysadmsh命令或mkdev user命令創(chuàng)建用戶時,系
統(tǒng)為該用戶自動生成的,用戶可使用vi編輯該文件為自己所用。.profile文件產(chǎn)生的效用直
至用戶退出系統(tǒng)后才消失,而當用戶重新登錄時,又開始發(fā)揮作用。
設置終端類型
用戶使用UNIX/Xenix系統(tǒng)時可能會遇到這樣一個現(xiàn)象:每次登錄后,系統(tǒng)會要求用戶敲入
終端類型,然后在用戶輸入相應信息后,才給出提示符。這是為什么呢?
原來在原始.profile文件中有這樣一個語句:
eval ‘test -m ansi:ansi -m:${TERM:ansi}-r -s -Q’
該語句的作用是要求用戶敲入所使用終端的類型并進行測試。
如果我們在.profile文件中加入以下命令:
TERM=terminal-name
TERM變量指明終端類型。
如:TERM=vt100,并且注釋掉eval語句。這樣處理以后,用戶再注冊時,就無需敲入終端類
型了。
定義PATH變量
該變量類似于DOS系統(tǒng)的PATH變量,其格式如下:
PATH=$PATH:$HOME/bin:/usr/informix/bin:.
說明:
1.該語句未尾的"·"表示當前路徑,不可缺少;
2.不同路徑間用":"隔開;
3.$PATH是系統(tǒng)中提供的默認變量,其初始值為/bin:/usr/bin;
4.路徑的順序是很重要的,前后次序不宜隨便顛倒。比如用戶自編了一個與系統(tǒng)命
令同名的可執(zhí)行文件,并將其放在$HOME下,并且打算使用這個命令而不是系統(tǒng)提供的同
名命令,那么PATH應設置為:
PATH=$HOME/bin:$PATH:/usr/informix/bin:.
因為,若不同路徑下有相同的命令或可執(zhí)行文件,則以第一個路徑下的為準。這時,SHEL
L先搜索$HOME/bin路徑,發(fā)現(xiàn)其下的這個可執(zhí)行文件,就為用戶調用,而不會再運行/bin或者
/usr/bin下的標準同名命令了。
設置提示符
用戶可以將PS1(主提示符)、PS2(輔助提示符)改為更受歡迎的形式。通常情況下,以超
級用戶登錄時,主提示符為"#",其它用戶為"$",PS2一般為"
格式:PS1="$LOGNAME> "
說明:將主提示符由默認值改為用戶注冊名。
使用stty命令重設終端配置
1.對數(shù)據(jù)傳輸方式進行設置
如:對奇偶校驗位、波特率(bps)大小、停止位位數(shù)進行重新設置。
2.字符處理
例1:stty nl
系統(tǒng)只接受字符作為換行符。
例2:stty-nl
系統(tǒng)以(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 #中斷鍵可中止系統(tǒng)中絕大多數(shù)前臺進程,是很重要的終端參數(shù)
重置終端中斷鍵為ctrl-C鍵。
4.其它常用stty命令
例1:stty sane ctrl-J
若終端功能發(fā)生紊亂,可用該命令來重置終端設置,使之恢復其出廠參數(shù)。該命令以"ct
rl-J"作為行結束符,因為在終端參數(shù)紊亂的情況下,RETURN鍵的功能很可能已經(jīng)失效,而ctr
l-J命令是系統(tǒng)提供的強行回車鍵,在絕大多數(shù)情況下不會失效。
例2:stty -a
該命令可以顯示出終端的所有參數(shù)。
以上stty命令是UNIX系統(tǒng)提供的,可隨時使用,用戶可據(jù)自己的需要在.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環(huán)境中,以在任意路徑下使用。
如:export SHELL ML TERM PATH MAIL PS1
使用Shell內部命令
用戶可在.profile文件內使用SHELL內部命令和操作系統(tǒng)命令,Shell常用命令見下表。
@@28173000.GIF;表1@@
.profile文件在Client/Server結構中的應用
在Client/Server結構下,Server總是時刻在運行的,不斷地接收Cleint發(fā)來的請求,處理
完后向Client發(fā)回某些信息。我們指定由server用戶來啟動server守候進程,特別需要注意
的是,該進程的父進程需設為系統(tǒng)起始進程(init進程),脫離所屬終端。否則當server用戶從
該終端退出后,該進程就變成了無法控制的"僵尸"進程。
因此,在server用戶的.profile文件中加上如下設置:
$HOME/bin/server >>/tmp/server.tmp
2> &1
說明:
1."&"符號的作用是使系統(tǒng)將進程作為后臺進程處理。
2."2"的作用。
SHELL在執(zhí)行一個UNIX命令時,自動打開三個文件:stdin(標準輸入)、stdout(標準輸出
)、stderr(標準錯誤),文件描述字分別是0、1、2。所以,上面語句中的"2"表示標準錯誤的
文件描述字。將server進程的錯誤信息重定向到/tmp/sever.tmp文件中,而不是stdout上,這
樣處理后既不會干擾前臺工作,而且用戶可隨時瀏覽/tmp/server.tmp文件及時發(fā)現(xiàn)錯誤,便
于程序調試,一舉兩得。對于后臺進程,一般都要將其結果重定向到某固定文件中。
3.由于UNIX系統(tǒng)是多用戶、多任務、分時處理系統(tǒng),所以不排除許多用戶以server用戶
注冊,因此其.profile文件會被執(zhí)行許多次,因之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系統(tǒng)守侯進程都可按上述處理。
總結
以上是生活随笔為你收集整理的linux /etc/profile文件,linux系统中/etc/profile和.profile的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OS笔记 14】进程同步篇——基本概念
- 下一篇: bash脚本程序语法Linux