- 論壇徽章:
- 0
|
※如果用戶希望使用命令行編輯和命令歷史機(jī)制,需要特殊的配置。你可能希望為新用戶配置這些功能。
一些例子
export TERM='vt100'
export PS1='$PWD $'
export LPDEST='laser'
export PATH=$PATH:/usr/local/bin
export EDITOR=vi
export HISTSIZE=40
export HISTFILE=~/.sh_history
上例中提到的特性是在登錄的時(shí)候,通過“環(huán)境”變量來定義的。一些經(jīng)常修改的環(huán)境變量如下
TERM ??
TERM變量定義了用戶的終端類型。如果TERM變量設(shè)置不正確。應(yīng)用程序就可能不能正確地寫到用戶的終端。有效的終端類型全部在/usr/lib/terminfo/*目錄下列出。你可以使用如下類似的命令來準(zhǔn)確的設(shè)置一個(gè)TERM類型:
export TERM=vt100 ?? ??#對應(yīng)一個(gè)vt100類型的終端
export TERM=hp?????? #對應(yīng)一個(gè)HP ASCII終端
export TERM=dtterm???? #對應(yīng)一個(gè)dtterm終端模擬窗口
你也可以使用ttytype命令來設(shè)置你的終端變量。這個(gè)命令通常可以自動(dòng)識別你的終端類型。以下的代碼可以加入到你的登錄時(shí)運(yùn)行的腳本中,為你設(shè)置你的終端類型:
if [ "$TERM = "" -0 \
????"#TERM" = "unknown" -o \
????"#TERM" = "dialup" -o \
????"#TERM" = "network" ]
??then
??????eval 'ttytype -s -a '
??fi
??export TERM
PS1
PS1變量定義你的shell提示符。這個(gè)提示符也可以由用戶自己來修改。一些有用的PS1的值如下所示:
export PS1='S' ???????????#使用一個(gè)簡單的"$"提示符
export PS1='$PWD $'?????????#在提示符內(nèi)包括用戶的pwd
export PS1='$PWD ($LOGNAME) $'??? #同時(shí)包括用戶的用戶名
LPDEST
LPDEST定義了用戶默認(rèn)打印機(jī)。在LPDEST中設(shè)置的打印機(jī)會優(yōu)先于系統(tǒng)管理員設(shè)置的系統(tǒng)范圍內(nèi)的默認(rèn)打印機(jī)。例子 :
export LPDEST=laser
export LPDEST=printera
PATH
用戶每次輸入一個(gè)命令,shell就必須去查找這個(gè)命令的可執(zhí)行文件的位置。PATH變量中包含有一個(gè)以“:”分割的路徑的列表,shell在這些列表中查找可執(zhí)行文件。如果用戶需要使用一個(gè)新的應(yīng)用和工具,你也許會需要修改你的PATH變量。你可以使用以下類似的語法來在用戶的PATH中增加新的目錄:
PATH=$PATH:/usr/local/bin ????# 在已存在的PATH中增加/usr/local/bin這一個(gè)路徑
初始化的PATH變量通常取自/etc/PATH文件。通常安裝一個(gè)應(yīng)用會自動(dòng)更新/etc/PATH文件,所以不用單獨(dú)地一個(gè)用戶的PATHS。
EDITOR
如果你的用戶想要使用命令行編輯,需要定義三個(gè)變量:
export EDITOR=vi
export HISTFILE=~/.sh_history
export HISTSIZE=50
EDITOR定義用戶選擇的命令行編輯器。emacs和vi是唯一允許的兩個(gè)值。HISTFILE代表記錄用戶輸入的命令的文件名。HISTSIZE決定保存在shell的命令緩沖區(qū)內(nèi)的命令的數(shù)量。
這些僅僅是你能為你的用戶定義的普通的環(huán)境變量的一部分。其它的環(huán)境變量的定義可以在POSIX
shell的幫助中查找,你的用戶也可能需要用到其它的變量。
環(huán)境變量可以在命令行中定義,但是更通常的做法是在登錄配置文件中定義,這會在以下的章節(jié)中介紹。
用戶登錄的時(shí)候發(fā)生了什么?
雖然定制一個(gè)用戶的登錄環(huán)境的環(huán)境變量可以在命令行中定義,但是通常是在登錄過程中執(zhí)行的腳本中定義,典型的,有三個(gè)在登錄時(shí)執(zhí)行的腳本來初始化用戶環(huán)境。
第一個(gè)腳本是由系統(tǒng)管理員維護(hù)的一個(gè)腳本文件,用來為所有的用戶定制通用的環(huán)境變量。
第二個(gè)腳本是每個(gè)用戶維護(hù)的本地腳本,本地登錄腳本能覆蓋和修改系統(tǒng)默認(rèn)的腳本。
另一個(gè)可選的腳本:附加的本地登錄腳本能夠定義附加的環(huán)境變量或者設(shè)置附加的shell特征。在POSIX
shell中,附加的腳本通常用來定義shell別名。
登錄腳本的名字在各種shell中都是不同的。以下是POSIX,Korn,和C shells的登錄腳本的詳細(xì)討論:
Shell環(huán)境初始化的順序
1. shell運(yùn)行正確的系統(tǒng)登錄腳本,這個(gè)腳本初始化用戶的環(huán)境。系統(tǒng)登錄腳本定義一個(gè)默認(rèn)的環(huán)境,這個(gè)腳本可以由系統(tǒng)管理員定制。
如果shell是.....系統(tǒng)登錄腳本是....
Bourne(/usr/old/bin/sh)/etc/profile
korn(/usr/bin/ksh)/etc/profile
POSIX(/usr/bin/sh)/etc/profile
限制的shell(/usr/bin/rshr,/usr/bin/rksh/etc/profile
C (/usr/bin/csh)/etc/csh.login
這些腳本定義和輸出的環(huán)境變量有PATH,TZ,TERM,其來源于/etc/PATH,/etc/MANPATH,/etc/TIMEZONE,/etc/SHLIB_PATH這些文件。由于這個(gè)系統(tǒng)登錄腳本在所有用戶登錄的時(shí)候都會運(yùn)行,系統(tǒng)管理員可以通過修改這個(gè)文件來為所有用戶設(shè)置全球變量的默認(rèn)值。
這種特性還可以讓每一個(gè)用戶在登錄系統(tǒng)時(shí)執(zhí)行一些基本的命令。
2. 顯示/etc/copyright 和/etc/motd文件中的內(nèi)容。
3. 提示用戶沒有閱讀的新聞:
news:news_filename
4. shell運(yùn)行在用戶的home目錄下的用戶的本地登錄腳本(如果存在)。
如果shell是.....本地登錄腳本為....
Bourne(/usr/old/bin/sh).profile
korn(/usr/bin/ksh).profile
POSIX(/usr/bin/sh).profile
限制的shell(/usr/bin/rshr,/usr/bin/rksh.profile
C (/usr/bin/csh).login
注意:在典型情況下,系統(tǒng)管理員在最初創(chuàng)建用戶帳號時(shí),會為每個(gè)用戶創(chuàng)建一個(gè)本地的登錄腳本。如果使用useradd命令來添加一個(gè)用戶,它會拷貝默認(rèn)的本地登錄腳本文件(/etc/skel/.profile)到這個(gè)用戶的home目錄下。用戶可以自己繼續(xù)修改這個(gè)文件來定制他們的環(huán)境變量,以滿足自己的需要。
在這個(gè)腳本之外,POSIX,Korn,和C shells可能(通常都會)有另外的本地登錄腳本:
-POSIX和korn shell-:
如果定義了ENV變量,shell會運(yùn)行在ENV中定義的文件(典型的,.shrc在開啟一個(gè)新的shell的時(shí)候執(zhí)行,許多程序(例如,vi,和mailx)運(yùn)行用戶在程序執(zhí)行中開啟一個(gè)shell;這被稱為一個(gè)shell
escape,一個(gè)shell
escape會要求重新執(zhí)行一次ENV文件,而.profile只會在登錄的時(shí)候執(zhí)行。ENV文件(.kshrc或者.shrc)會在登錄時(shí),.profile文件執(zhí)行后執(zhí)行。
- C shell:在一個(gè)新的C shell啟動(dòng)的時(shí)候運(yùn)行.cshrc文件。這和Korn shell
ENV文件的工作方式類似。.login 文件只在登錄的時(shí)候運(yùn)行,每一次開啟一個(gè)新的C shell的時(shí)候會重新運(yùn)行.chsrc文件。
一旦所有的初始化工作都完成后,shell會出現(xiàn)一個(gè)提示符等待用戶的輸入。
/etc/skel目錄
當(dāng)使用useradd命令創(chuàng)建一個(gè)新用戶帳號的時(shí)候,系統(tǒng)會拷貝一些默認(rèn)的配置文件到新用戶的home目錄下。/etc/skel目錄下的默認(rèn)的配置文件包括:
/etc/skel/.profile?????#ksh/posix本地登錄腳本
/etc/skel/.login??????#csh 本地登錄腳本
/etc/skel/.cshrc????? #csh 附加登錄腳本
/etc/skel/.exrc??????#vi 啟動(dòng)配置文件
如果你想要更改拷貝到新用戶home目錄中的默認(rèn)配置文件,你可以修改/etc/skel中的文件。對/etc/skel目錄下的文件的修改不會影響已經(jīng)存在地用戶的home目錄下的文件。
如果你的應(yīng)用要求在用戶的home目錄下建立一些配置文件,你同樣可以通過添加文件/etc/skel目錄來自動(dòng)建立這些配置文件。
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u2/84425/showart_2069345.html |
|