亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1660 | 回復(fù): 0
打印 上一主題 下一主題

Unix的環(huán)境變量 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-04-05 14:27 |只看該作者 |倒序?yàn)g覽
一、SHELL的功能及分類  
SHELL是UNIX作業(yè)系統(tǒng)中的'命令編譯器'(Command Inter-  
preter),它基本上是一個(gè)常駐的執(zhí)行程式,它在使用者一簽入  
成功後就立即被載入(可在簽入後以ps指令看到),主要功能則  
在於接受使用者的指令、尋找命令(即檔案)的所在并加以執(zhí)行。  
因此,SHELL的不同可能直接影響使用者輸入指令的方式、檔  
案尋找的程序及速度等。  
UNIX作業(yè)系統(tǒng)的SHELL大致可分為兩大系統(tǒng),一是1970年代  
前期由美國(guó)貝爾實(shí)驗(yàn)室(BELL LAB)所發(fā)展的sh(Bourne Shell),  
它是UNIX系統(tǒng)中的標(biāo)準(zhǔn)SHELL,此一系統(tǒng)後來(lái)又發(fā)展出ksh(Korne  
Shell)、bash(Bourne Again Shell)等功能更多的介面;另一系  
統(tǒng)是美國(guó)柏克來(lái)大學(xué)(Berkekey)在1970年代後期所發(fā)展的csh(C  
Shell),和它屬於同一系統(tǒng)的有tcsh等。  
無(wú)論上述的那一種shell,它的基本功能與作用都是相同的,  
它們之間的不同處可能在於對(duì)同一動(dòng)作處理程序上的不同(會(huì)影響  
命令處理的速度)、所提供內(nèi)鍵命令及變數(shù)的或多或寡等,其中內(nèi)  
部命令與變數(shù)的多寡直接影響到shell功能的多寡,是使用者在使  
用時(shí)最容易直接感受到的。  
在UNIX系統(tǒng)中,使用者可視自己的需要執(zhí)行sh、ksh、bash、  
csh或tcsh來(lái)代替原先使用的shell、改變正在使用的環(huán)境;也可  
以用'chsh'指令、輸入想使用的shell的路徑及名稱(如/bin/csh,  
在Y11-Y14機(jī)器上還需輸入個(gè)人使用者的密碼),改變以後每次  
login時(shí)所使用的shell、使自己所使用的環(huán)境能最滿足自己使用  
上的需要。  
二、SHELL 的START FILES  
不管你的login shell是那一種shell,每一個(gè)shell都有它  
自己的start files,我們?cè)O(shè)定理想環(huán)境時(shí)所需使用的指令與設(shè)  
定的變數(shù),都可以寫在這些start files中,在login時(shí)先後加以  
執(zhí)行,這些start files的名稱分別是:  
SHELL START FILES  
sh /etc/profile  
$HOME/.profile  
bash /etc/profile  
$HOME/.profile(or $HOME/.bashrc)  
csh None  
$HOME/.cshrc & $HOME/.login  
tcsh None  
$HOME/.cshrc(or $HOME/.tcshrc)  
& $HOME/.login  
如果這些檔案都存在,那麼它們的執(zhí)行順序?qū)⑹牵?nbsp; 
1. sh系列 /etc/profile --> $HOME/.profile  
2. csh系列 $HOME/.cshrc --> $HOME/.login  
在這些start files中,/etc下的profile是系統(tǒng)管理者為  
大家設(shè)定的,一般使用者無(wú)法做任何更動(dòng),如果對(duì)系統(tǒng)管理者的  
設(shè)定覺得不夠或不符需要,則可在個(gè)人帳號(hào)下的.profile、  
.cshrc、.login增加或修正,尤其是對(duì)csh及tcsh的使用者而言,  
因?yàn)樵?etc下并沒有start files,所以也不會(huì)有系統(tǒng)管理者設(shè)定  
好的環(huán)境可以使用,使用者就必須自行設(shè)定所需要的所有的變數(shù)  
與指令,否則常會(huì)有寸步難行的感覺,最常見的如許多指令都  
因找不到而不能用(因?yàn)闆]有設(shè)path)、鍵無(wú)法使用  
(因鍵的作用沒有定義)...等。  
三、常見的需求與常用的指令  
當(dāng)我們?cè)赨NIX環(huán)境中工作,常會(huì)為了使自己使用時(shí)更方便而  
產(chǎn)生某些需求,這些常見的需求及其設(shè)定方式如:  
1. 希望鍵能有作用  
在$HOME/.profile或$HOME/.cshrc中加上  
stty erase "^H"  
2. 希望在UNIX環(huán)境中能使用中文  
在$HOME/.profile(sh系列)中加上  
stty -istrip cs8  
LC_CTYPE=ISO_8859_1  
export LC_CTYPE  
在$HOME/.cshrc(csh系列)中加上  
stty -istrip cs8  
setenv LC_CTYPE iso_8859_1  
3. 希望能有像DOS系統(tǒng)中DOSKEY的功能  
只要是使用bash及tcsh即具備此項(xiàng)功能。  
4. 希望能使用工作站上的漢書編輯器(he)  
在$HOME/.profile(sh系列)中加上  
LANG=big5  
export LANG  
在$HOME/.cshrc(csh系列)中加上  
setenv LANG big5  
5. 希望提示符號(hào)能隨著路徑更動(dòng)而改變  
在sh及csh中并無(wú)法做到這個(gè)功能,而在bash及tcsh中  
的設(shè)定則分別是:  
bash:在$HOME/.profile中加上  
PS1='`PWD`> '  
或 PS1="w> "  
tcsh:在$HOME/.cshrc中加上  
set prompt='%~> '  
除了上面所提到針對(duì)特殊需要所做的設(shè)定之外,在做環(huán)境設(shè)  
定時(shí)常用到的指令還有:  
1. stty  
設(shè)定對(duì)輸入(input)的定義與如何做輸出,這個(gè)指令的  
叁數(shù)極為眾多,我們可用  
stty -a  
看到所有的叁數(shù)及其設(shè)定,在這些叁數(shù)中,常用的有:  
istrip (-istrip)  
將所有的輸入截取成7 bits的資料,然而中文的資  
料都是8 bits的,所以當(dāng)需要使用中文時(shí),請(qǐng)加上  
'-istrip'這個(gè)叁數(shù),以避免輸入的資料被破壞。  
cs7 cs8  
設(shè)定每一字元的資料都是7 bits或8 bits的資料,  
因此在需要使用中文時(shí),通常會(huì)有如下的設(shè)定:  
stty -istrip cs8  
iuclc (-iuclc)  
將標(biāo)準(zhǔn)輸入的大寫字母視為小寫(或取消)。  
olcuc (-olcuc)  
將小寫的字母以大寫型態(tài)輸出(或取消)。  
echo (-echo)  
將所有的輸入由標(biāo)準(zhǔn)輸出處輸出(或取消輸出,即  
在螢?zāi)簧峡床坏阶约旱妮斎耄?nbsp; 
stty除了這些叁數(shù)外,還可以用來(lái)定義某一個(gè)鍵的特定  
功能,如:  
stty erase "^H"  
stty kill "^U"  
2. mesg y (mesg n)  
若在工作時(shí)不希望被talk等訊息所打擾,可下'mesg n'  
指令,以避免外來(lái)迅息中斷正要進(jìn)行的工作('mesg y'則是  
恢復(fù)與外界的溝通)。  
3. umask [nnn]  
設(shè)定新增檔案或目錄的屬性(mode),新檔案或新目錄的  
mode為系統(tǒng)管理者以create所設(shè)定的屬性減去nnn,如系統(tǒng)管  
理者所設(shè)定的檔案權(quán)利狀態(tài)是777,而使用者又自行設(shè)定了  
umask 022  
則這個(gè)使用者在他個(gè)人帳號(hào)下的每一個(gè)新產(chǎn)生的檔案的權(quán)利  
狀態(tài)都將會(huì)是755(777-022)。  
4. Function 與 Alias  
對(duì)於一連串或某一指令,我們可以用function的方式  
(在sh、ksh、bash中)或alias指令(在csh、tcsh、ksh、bash  
中),用一簡(jiǎn)短字串來(lái)代替這一個(gè)或一連串的指令,function  
的用法如:  
vi(){  
mesg n  
/usr/ucb/vi $*  
mesg y  
}  
其中,'vi'是function的名稱,{}之間是'vi'這個(gè)  
function所包含的指令內(nèi)容,而要注意的是:function的名  
稱不能與shell的內(nèi)鍵指令(builtin)名稱相同,否則這個(gè)  
function即無(wú)法成立。  
同樣的功能,alias指令的用法如:  
alias vi 'mesg n; /usr/ucb/vi !*; mesg y'  
其中vi即是''中所包含字串的別名,別名與各shell的builtin  
名稱可以一樣(alias本身也是一個(gè)內(nèi)鍵指令)。  
若我們?cè)谀骋籹hell中同時(shí)建立一名稱相同的function  
與alias(如在bash中),則alias的執(zhí)行次序優(yōu)先於function  
的執(zhí)行。  
四、常用變數(shù)設(shè)定  
在UNIX環(huán)境中的變數(shù)可分為兩類,一是環(huán)境變數(shù)(Enviroment  
Variable)、一是shell變數(shù)(Shell Variable),二者之間的不同  
處在於:環(huán)境變數(shù)不會(huì)因?yàn)閟hell間的更替而失去這個(gè)變數(shù)的作  
用,如PATH是一個(gè)環(huán)境變數(shù),因此,即使您在設(shè)定好PATH之後再  
執(zhí)行另一個(gè)shell(如原來(lái)是用sh、而後在sh環(huán)境中再執(zhí)行csh),  
PATH這個(gè)環(huán)境變數(shù)仍能繼續(xù)作用,而shell變數(shù)(如csh的cwd)則是  
只有在特定的shell下才有作用,一執(zhí)行其他shell就失去作用。  
在sh及csh二系列各有其不同的設(shè)定變數(shù)的方式,為:  
1. Bourne Shell系列  
[VAR]=[STRING or NUMBER]  
export [VAR]  
如果當(dāng)我們離開shell、進(jìn)入另一個(gè)程式(如tin)之後,  
仍需要使用這個(gè)變數(shù),則除了設(shè)定這個(gè)變數(shù)的值外,還需要  
以'export'指令加以宣告,如設(shè)定螢?zāi)恍蛻B(tài)的變數(shù)TERM就需  
以'export'來(lái)宣告。  
2. C Shell系列  
set [var] = [STRING or NUMBER]  
setenv [var] [STRING or NUMBER]  
其中'set'是單純?cè)O(shè)定變數(shù)值,'setenv'則除了設(shè)定變  
數(shù)值外,還包含了類似sh中'export'的功能。  
而無(wú)論是Bourne Shell或C Shell,它們都有一些基本的、  
共同的常用變數(shù),如:  
1. PATH  
設(shè)定執(zhí)行檔的尋找路徑,若現(xiàn)行目錄也要包含在尋找的  
路徑中,則需在設(shè)定路徑時(shí)給予一'.',表示現(xiàn)行目錄亦包含  
在尋找的路徑中,如:  
PATH=.:/bin:/usr/local/bin:/usr/ucb  
或  
set path=(. /bin /usr/local/bin /usr/ucb)  
2. EDITOR  
設(shè)定想要使用的編輯器,如  
EDITOR=/usr/ucb/vi  
或  
setenv EDITOR /usr/ucb/vi  
3. HOME  
設(shè)定個(gè)人帳號(hào)home directory的所在位置,通常在login  
時(shí)即叁考/etc/passwd而給予一設(shè)定值,因此除非使用者有某  
些特殊需求,通常不會(huì)重新設(shè)定。  
4. SHELL  
同樣是在login時(shí)即會(huì)叁考/etc/passwd的內(nèi)容而自動(dòng)設(shè)  
定,使用者即使重新設(shè)定這個(gè)變數(shù)的內(nèi)容,對(duì)帳號(hào)的使用也  
不會(huì)有任何影響。  
5. 提示符號(hào)的設(shè)定  
在sh 中: PS1="[STRING]"  
PS2="[STRING]"  
在csh中: set prompt="[STRING]"  
當(dāng)然以上所列的只是使用得較為廣泛的變數(shù),若您覺得這些  
不夠用,可用man sh、man csh、man tcsh、man bash指令查閱各  
shell的說(shuō)明,在其中您將可看到各個(gè)shell所包含的變數(shù)及各變數(shù)  
的用法。  
若不清楚某一變數(shù)的設(shè)定內(nèi)容,可用'echo $[VAR]'來(lái)觀察  
變數(shù)的內(nèi)容,如:  
echo $PATH  
五、SHELL 環(huán)境的異動(dòng)  
前面所提到start files中的設(shè)定將在使用者login時(shí)執(zhí)行,  
但當(dāng)我們要在線上直接改變所使用的shell(如直接執(zhí)行'csh'或  
'exec csh',此時(shí)不會(huì)執(zhí)行start files)或是要改變?cè)O(shè)定的內(nèi)容,  
在編修了start files或script files之後,可利用下列指令將  
環(huán)境更新,而不必重新login:  
. [script file] (在sh 系列的shell中)  
source [script files] (在csh系列的shell中)  
直接執(zhí)行一個(gè)script file與用'.'、'source'指令執(zhí)行各有  
其不同的效果,我們可建立一內(nèi)容為  
cd / (或cd [DIR])  
的script file來(lái)觀察它們之間的差異:  
因script file的執(zhí)行環(huán)境是一內(nèi)定或自定的subshell(可在  
script file的第一行用類似'#!/bin/csh'指令加以設(shè)定),  
所以它的直接執(zhí)行并無(wú)法真正將shell環(huán)境的工作目錄切換到  
/,而script file一結(jié)束,subshell即不存在、'cd /'指  
令的效果也告消失;而用'.'或'source'執(zhí)行則是真正將  
shell的工作環(huán)境下的工作目錄更換到/,不會(huì)因?yàn)閟cript  
file的結(jié)束而使檔案中指令的效果消失。



本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/16949/showart_95567.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP