Bourne Shell
Tác giả | スティーブン・ボーン |
---|---|
Sơ bản | 1977 năm |
Đối ứng OS | UNIX |
Loại đừng | Unixシェル |
Bourne Shell( ボーンシェル ) は,Unix Version 7の デフォルトシェルでUnixで sử われていたUnixシェルの một つである.POSIXQuy cách で quy định されるUnix hệ システムではBourne Shell sau 継 の POSIX chuẩn 拠 の シェルに trí き đổi わっており, POSIXに chuẩn 拠していないBourne Shellはすでに sử われていない./bin/sh
はかつてはBourne Shellだったが, hiện tại はPOSIXシェルへ のシンボリックリンクかハードリンクになっている ( たとえばDebianではdash,RHELではbash). Nhiều く の Unix hệ システムでは hiện tại でもシェルスクリプトを ghi lại する の に/bin/sh
が giống nhau に sử われている. ただし, ユーザが thông thường sử うシェルにはインタラクティブに thích したPOSIX chuẩn 拠シェルを dùng いることが giống nhau である.
AT&Tベル viện nghiên cứuのスティーブン・ボーンが khai phát し, それまで のThompson shellを trí き đổi えた. いずれもコマンド danh はshである.Version 7 Unixの một bộ として1977 năm に đại học chờ に xứng bố された. Đối lời nói hình の コマンドインタプリタとしても sử われるが,スクリプト ngôn ngữとして の tính cách が cường く, giống nhau に cấu tạo hóa プログラムを làm り ra すと khảo えられている toàn て の cơ năng を hàm んでいる.
ブライアン・カーニハンとロブ・パイクによる『UNIXプログラミング hoàn cảnh 』 の xuất bản が Bourne Shell の người khí を cao めた. これはチュートリアル hình thức でプログラミング ngôn ngữ として の シェルを giới thiệu した lúc ban đầu の thương nghiệp xuất bản bổn である.
Khởi nguyên
[Biên tập]Bourne shell はMashey shellの thay thế として thiết kế された.
Lúc trước の thiết kế mục tiêu には, dưới の sự bính が hàm まれていた[1].
- シェルスクリプトをフィルタとして sử えるようにする.
- Chế ngự cấu tạoと変 sốを dẫn vào してプログラム の しやすさを hướng về phía trước させる.
- Toàn て の nhập xuất lựcファイル ghi lại tửを chế ngự する.
- シェルスクリプト nội でシグナル処 lý を chế ngự する.
- シェルスクリプトを giải 釈する tế の văn tự liệt trường の chế hạn を triệt 廃する.
- Văn tự liệt の クォート cơ cấu を hợp lý かつ phiếm dùng にする.
- Version 7 でHoàn cảnh 変 sốCơ cấu が thêm vào された. これを lợi dụng して, シェルスクリプトが lúc đầu hóa khi に cấu trúc した hoàn cảnh tình báo を, わざわざパラメータを sử わずとも tử スクリプト ( tửプロセス) に độ すことができる.
Cơ năng と đặc trưng
[Biên tập]UNIX Version 7 で の Bourne Shell の cơ năng と đặc trưng を dưới に cử げる:
- スクリプトは, そ の ファイル danh を sử ってコマンドとして hô び ra すことができる.
- Đối lời nói にも phi đối lời nói にも sử える.
- コマンド đàn の đồng kỳ thật hành も không giống kỳ thật hành も khả năng.
- Nhập xuất lực の リダイレクトとパイプラインをサポート.
- Tổ み込みコマンド đàn を cung cấp.
- フロー chế ngự cấu thành tử, trích dẫn ファシリティ, quan số を cung cấp.
- Hình の ない変 số.
- Cục sở と đại vực の 変 số スコープを cung cấp.
- スクリプトは thật hành trước にコンパイルする tất yếu が vô い.
- Goto cơ năng を cầm っていない.
- バッククォートを sử ったコマンド đổi thành ( Command substitution ):
`command`
<<
を sử ったヒアドキュメント( Here documents ) cơ năng. スクリプト nội に chôn め込まれたテキストブロックを nhập lực として sử う.- "
for ~ do ~ done
"ループ. Đặc に,$*
を sử って dẫn dãy số thượng をループする phương pháp. - "
case ~ in ~ esac
"による tuyển 択 cơ cấu. Chủ に dẫn số phân tích に sử われる. sh
は, hoàn cảnh 変 số を sử ってエクスポート khả năng なキーワードパラメータや変 số を thật hiện している.- Nhập xuất lực chế ngự と biểu hiện マッチング の ために cường lực な cơ năng を dụng ý している.
また, Bourne Shell はエラーメッセージ の ために 2 phiên のファイル ghi lại tửを sử うという quy định を lúc ban đầu に chọn dùng したプログラムでもある. これにより,エラーメッセージをデータと chia lìa してスクリプトで chế ngự することが dễ dàng になった.
スティーブン・ボーンは tự thân がケンブリッジ đại họcで quan わっていたALGOL 68Cコンパイラ の いくつか の đặc trưng をこ の シェルに lấy り込んだ. Lệ えば, "if~then~else~fi
","case~in~out~esac
","for~while~do~od
"といった cấu văn である. さらに Version 7 の シェルはC ngôn ngữで ghi lại されているが, ボーンはそ のソースコードをALGOL68 phong にするためにいくつか のマクロ[2]を sử っている. こ の マクロは,IOCCCが khai thúc giục される nguyên の 1つとなった ( hắn に,4.2BSDの finger コマンドも nguyên になっている )[3].
1979 năm lấy hàng に dẫn vào された cơ năng
[Biên tập]Mấy năm の nội に AT&T は Bourne Shell を cường hóa した. Các バージョンは đối ứng する AT&T UNIX の バージョン danh で hô ばれる( chủ なバージョンは Version 7, SystemIII, SVR2, SVR3, SVR4). という の も, シェルはバージョン phiên hiệu が giao cho されていないからでもあり, khác nhau するには thật tế に cơ năng をテストしてみる tất yếu があった[4].
1979 năm lấy hàng の バージョン の Bourne shell の cơ năng ( や đặc trưng ) を dưới に kỳ す[5].
- UNIX System III( 1981 năm )
- testコマンドを tổ み込み.
- # でコメントを thư き込めるようになった.
- コロンを sử ったパラメータ の デフォルト trị へ の đổi thành: "${parameter:=word}"
- SVR2( 1984 năm )
- Quan số định nghĩa が khả năng となり,returnが tổ み込まれた.
- unset,echo,typeを tổ み込み
- ソースコードを thư き đổi えて, ALGOL68 phong でなくした.
- SVR3( 1986 năm )
- Hiện tại の ような "$@" の cách dùng
- getoptsTổ み込み
- パラメータ処 lý を cải thiện し, quan số の lại quy hô び ra しが khả năng となった.
- 8ビットクリーン
- SVR4( 1989 năm )
- ジョブコントロール
- Nhiều バイト văn tự サポート
サンがOpenSolarisの trung の Bourne Shell の đẻ ra bản をオープンソースとしてリリースすると, hắn の フリーなUNIX hệ OS hướng けにこれを nhổ trồng するHeirloomプロジェクトが bắt đầu され, lợi dụng khả năng となっている. Solaris や SVR4 の Bourne shell はオリジナル の ALGOL 68 phong の ソースコードではない.
Phê phán
[Biên tập]Bourne shell は,C Shellと so べて thứ の ような thiếu điểm があると phê phán されてきた[6][7].
- Đối lời nói に sử dụng する trường hợp, Bourne shell は sử いやすくない.C Shellには, ヒストリ cơ năng, エイリアス cơ năng, ジョブコントロール cơ năng などがあり, tố sớm く giản 単に thao tác できる.
- Unixシステム の đại bộ phận はC ngôn ngữで thư かれているが, Bourne shell の ngữ pháp はC ngôn ngữ とは toàn く tựa ておらず,ALGOLに tựa ている.
- Thứcを bình 価する cơ năng がない. 単 thuần な thức であっても phần ngoài の
test
とexpr
というユーティリティを sử わないと thức を bình 価できない.
Sau 継
[Biên tập]Bourne shell ではなく Thompson shell から đẻ ra したC Shell(csh) は 4.1BSD で xứng bố され,BSDカーネル の “ジョブ chế ngự” cơ năng を dẫn vào した. ジョブ chế ngự は đối lời nói にプログラムを ngăn めたり, sau でそれを lại khai させる cơ năng である[8].C Shell がコマンドインタプリタとして người khí になった の はこ の cơ năng があったためである. また C Shell は C ngôn ngữ phong の ngữ pháp を chọn dùng したことにより Bourne Shell と trao đổi tính がなくなってしまった. なお, ジョブ chế ngự cơ năng は sau に Bourne shell にも dẫn vào され, そ の sau 継シェル の nhiều くにも chọn dùng されている.
Sau にデビッド・コーンが khai phát したKornShell(ksh) は, Bourne Shell と C Shell の trung gian の ようなも の で, ngữ pháp はほぼ Bourne Shell と cùng で, ジョブ chế ngự cơ năng を C Shell から lấy り nhập れた. Lúc trước の KornShell (ksh88) の cơ năng はPOSIXにおけるシェル tiêu chuẩn の cơ bàn となっている. そ の sau, ksh93 が 2000 năm にオープンソース hóa され, いくつか のLinuxディストリビューションで sử われている. ksh88 の クローン pdksh もあり,OpenBSDの デフォルトシェルとなっている.
Bash(Bourne Again Shell)は, そ の danh が kỳ す thông り Bourne Shell を cơ bản として C Shell や KornShell の cơ năng を lấy り nhập れ,GNUプロジェクトの một bộ として khai phát された.macOS,Cygwin,Nhiều く の Linuxディストリビューションでデフォルトシェルとなっている.
rcは,ベル viện nghiên cứuのトム・ダフがVersion 10 Unixで の sh の sau 継として khai phát した.Plan 9 from Bell Labsではデフォルトシェルとされている.Plan 9 from User Spaceの một bộ としてUNIXにも nhổ trồng されたことがある.
かつてCSRGの BSDリリースでも sử われた Bourne Shell には làm 権 vấn đề がまとわりついていた. そこで Kenneth Almquist がAlmquist Shellとも hô ばれる Bourne Shell の クローンを khai phát した. これはBSDライセンスで cung cấp されていて, hiện tại もBSD hệ でメモリ dung lượng が tiểu さい trường hợp などに sử われている. Linux にも nhổ trồng されDebian Almquist shellまたは dash と hô ばれている. メモリ sử dụng lượng が tiểu さいため, シェルスクリプト の thật hành が bash よりも cao tốc という đặc trưng がある.
Lợi dụng
[Biên tập]Bourne shell は toàn て の thương dùng UNIXシステムで tiêu chuẩn とされているが, BSD hệ の システムにはC Shellで thư かれたスクリプトが đa số tồn tại する. Bourne shell の スクリプトはGNU/Linuxや hắn のUnix hệシステム thượng のbashやdashでもほとんど thật hành khả năng である.
Nhiều く の Linuxシステムで,/bin/sh
はbashへ のハードリンクまたはシンボリックリンクとなっている. しかしUbuntuなど の Linuxシステムでは hiệu suất がよいことから/bin/sh
をdashへ の リンクとしている.
Ngữ lục
[Biên tập]Ai も Bourne shell の ngữ pháp がどうなっているかを bổn đương には biết らない. ソースコードを điều べてみてもほとんど dịch に lập たない.— Tom Duff[9]
Tham khảo văn hiến
[Biên tập]- ブルース・ブリン『Nhập môn UNIXシェルプログラミング――シェル の cơ sở から học ぶUNIX の thế giới』Dưới chân núi triết điển訳 ( đặt lại đệ 2 bản ), ソフトバンククリエイティブ, 2003 năm 2 nguyệt.ISBN4-7973-2194-6 .
- Dưới chân núi triết điển『UNIXシェルスクリプトコマンドブック』ソフトバンククリエイティブ, 2005 năm 5 nguyệt.ISBN4-7973-3063-5 .
- デイビッド・タンズリー『Linux&UNIX Shellプログラミング――Bourneシェル hoàn toàn công lược 』Phục bộ từ mỹ tử訳, ピアソンエデュケーション, 2002 năm 3 nguyệt.ISBN4-89471-526-0.
- Trung kiều một lãng『UNIXシェルスクリプト nghịch dẫn き bách khoa toàn thư 333 の cực ý ――Linux,FreeBSD,Solaris,Mac OS X đối ứng』 tú cùng システム, 2004 năm 10 nguyệt.ISBN4-7980-0884-2 .
- Arnold Robbins, Nelson H. F. Beebe『Tường giải シェルスクリプト』Ngày hướng あおい訳, オライリー・ジャパン, 2006 năm 1 nguyệt.ISBN4-87311-267-2 .
Chú thích
[Biên tập]- ^"The A-Z of Programming Languages: Bourne shell, or sh"March 2009, Computerworld
- ^Bourne, Steve(12 January 1979). “mac.h - Macros used by Bourne to structure C like Algol68C”.AT&T.2006 năm ngày 9 tháng 9Duyệt lãm.
- ^Landon Curt Noll, Simon Cooper, Peter Seebach and Leonid A. Broukhis (2004 năm ). “The IOCCC FAQ - Q/A: How did the IOCCC get started?”.ioccc.org.2006 năm ngày 9 tháng 9Duyệt lãm.
- ^Bourne Shell release testing script from Sven Mascheck
- ^History of the Bourne Shell family
- ^An Introduction to the C shellbyBill Joy.
- ^Bezroukov, Nikolai (August 15, 2009). “Introduction to the Unix shell history”.2010 năm ngày 29 tháng 9Duyệt lãm.
- ^G.アンダーソン, P.アンダーソン, lạc hợp hạo một lang, đại mộc đôn hùng 訳『UNIX C SHELL フィールドガイド』パーソナルメディア kabushiki gaisha, 1987 năm ngày 15 tháng 10, 117-134 trang.ISBN4-89362-029-0.
- ^Tom, Duff. “Rc — The Plan 9 Shell”.2014 năm ngày 15 tháng 10Duyệt lãm.
Quan liền hạng mục
[Biên tập]Phần ngoài リンク
[Biên tập]- Bourne Shell tự học テキスト
- ボーン thị が C を ALGOL68C phong にするために sử ったマクロ
- Bourne Shell の ソースコード
- オリジナル の Bourne Shell の ドキュメント(1978 năm, tiếng Anh )
- The individual members of "The Traditional Bourne Shell Family"
- A port of the "heirloom" SVR4 Bourne shell from OpenSolaris to other Unix-like systems
- faqs shell differences
- Howard Dahdah, The A–Z of Programming Languages: Bourne shell, or sh — An in-depth interview with Steve Bourne, creator of the Bourne shell, or sh,Computerworld,5 March 2009.