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