1.3 登錄
1.3 登錄
登錄名
當(dāng)我們登錄UNIX系統(tǒng)時,我們輸入我們的登錄名,然后是口令。系統(tǒng)接著就在密碼文件中掃描我們的登錄名,密碼文件通常位于/etc/passwd。如果我們在密碼文件中查看我們的登錄項(xiàng),將會看到它是由7個冒號分離的部分組成的:登錄名,加密口令,用戶的數(shù)字ID(205),組的數(shù)字ID(105),一個注釋段,起始目錄(/home/sar),還有shell(注:以后直接用shell代表解釋器)程序(/bin/ksh)。
sar:x:205:105:Stephen Rago:/home/sar:/bin/ksh
所有新的系統(tǒng)已經(jīng)把加密口令移到另一個文件中了。在第六章,我們將查看這些文件和一些函數(shù)來訪問他們。
Shell
一旦我們登錄后,一些特定的系統(tǒng)信息就顯示出來,接著我們就可以在shell中輸入命令。(一些系統(tǒng)在你登錄后,會啟動窗口管理程序,但是一般來說,你會以在其中一個窗口中運(yùn)行shell來結(jié)束。)shell是一個命令行解釋器,它讀入用戶的輸入并且執(zhí)行命令。用戶通常從終端(一個交互式的shell),或者某些時候從一個文件(被稱為shell教本)向shell輸入。通常使用的shell總結(jié)在圖1.2中。
|
名字 |
路徑 |
FreeBSD |
Linux |
Mac OS X 10.3 |
Solaris 9 |
|
Bourne shell |
/bin/sh |
* |
link to bash |
Link to bash |
* |
|
Bourne-again shell |
/bin/bash |
Optional |
* |
* |
* |
|
C shell |
/bin/csh |
link to tcsh |
Link to tcsh |
link to tcsh |
* |
|
Korn shell |
/bin/ksh |
|
|
|
* |
|
TENEX C shell |
/bin |
* |
* |
* |
* |
圖 1.2 UNIX系統(tǒng)常用shell
系統(tǒng)從密碼文件中登錄項(xiàng)的最后一個字段中了解到應(yīng)該執(zhí)行哪一個shell。
Bourne shell,由Steve Bourne在貝爾實(shí)驗(yàn)室開發(fā),自Version 7以來一直在使用,并且被目前幾乎所有的UNIX系統(tǒng)所支持。The control-flow constructs of the Bourne shell are reminiscent of Algol 68。
C shell是由Bill Joy在伯克利開發(fā)的,被所有的BSD發(fā)行版支持。另外,C shell也被AT&T的System V/386 Release 3.2和System V Release 4(SVR4)所支持。(我們將在下一章中更詳細(xì)介紹這兩個版本UNIX系統(tǒng)的不同。)C shell構(gòu)建于第六版的shell,而不是Bourne shell。它的control flow更像C語言,它也支持一些其它的,Bourne shell所不支持的特性:job control, a history mechanism, and command line editing。
Korn shell被認(rèn)為是對Bourne shell的成功者,它最先被SVR4所支持。Korn shell是由David Korn在貝爾實(shí)驗(yàn)室開發(fā)的,運(yùn)行于大多數(shù)的UNIX系統(tǒng)上。在SVR4之前,Korn shell是一個收費(fèi)組件,所以它并沒有其它兩個shell流行。它也和Bourne shell兼容,同時包含了使得C shell流行的那些特性:job control, command line editing, and so on。
Bourne-again shell是由所有Linux系統(tǒng)所支持的GNU shell。它被設(shè)計(jì)為與POSIX一致,同時仍然與Bourne shell兼容。它同時支持C shell和Korn shell的特性。
TENEX C shell是C shell的增強(qiáng)版本。它從TENEX操作系統(tǒng)(1972年開發(fā)于Bolt Beranek和Newman)借用了許多特性,比如命令補(bǔ)全。TENEX C shell對于C shell增加了許多特性,其通常被作為C shell的替代品。
Linux使用Bourne-again shell作為默認(rèn)shell。事實(shí)上,/bin/sh就是/bin/bash的連接。FreeBSD和Mac OS X的默認(rèn)shell是TENEN C shell,由于C shell的程序設(shè)計(jì)語言被廣泛的認(rèn)為很難使用,所有他們使用Bourne shell作為他們的系統(tǒng)(administrative)shell腳本。Solaris有繼承于BSD和System V的,在圖1.2中所列出的所有shell。大多數(shù)這些shell的免費(fèi)部分能夠在因特網(wǎng)上得到。
通過本書,我們將展示互動的shell例子來執(zhí)行我們所開發(fā)的程序。這些例子使用Bourne shell,Korn shell和Bourne-again shell的共同特性。
posted on 2006-01-03 21:56 PIGWORLD 閱讀(306) 評論(0) 編輯 收藏 引用 所屬分類: 《UNIX環(huán)境高級編程(第二版)》翻譯

