Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Bourne_shellとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > デジタル大辞泉 > Bourne_shellの意味・解説 

ボーン‐シェル【Bourne shell】

読み方:ぼーんしぇる

UNIX(ユニックス)系のオペレーティングシステムで、ユーザー入出力操作を担う標準的なシェルプログラムの一。コマンド名はsh1977年スティーブン=ボーン開発。のちに後継Bash(バッシュ)が開発された。Bシェル


Bourne Shell

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/08 16:38 UTC 版)

Bourne shell
作者 スティーブン・ボーン
初版 1977年
対応OS UNIX
種別 Unixシェル
テンプレートを表示

Bourne Shell(ボーンシェル)は、Unix Version 7 のデフォルトシェルでUnixで使われていたUnixシェルの一つである。POSIX規格で規定されるUnix系システムではBourne Shell後継のPOSIX準拠のシェルに置き換わっており、POSIXに準拠していないBourne Shellはすでに使われていない。/bin/shはかつてはBourne Shellだったが、現在はPOSIXシェルへのシンボリックリンクハードリンクになっている。多くのUnix系システムでは現在でもシェルスクリプトを記述するのに/bin/shが一般的に使われている。ただし、ユーザが通常使うシェルにはインタラクティブに適したPOSIX準拠シェルを用いることが一般的である。

AT&Tベル研究所スティーブン・ボーンが開発し、それまでの Thompson shell を置き換えた。いずれもコマンド名は sh である。Version 7 Unix の一部として1977年に大学等に配布された。対話型のコマンドインタプリタとしても使われるが、スクリプト言語としての性格が強く、一般に構造化プログラムを作り出すと考えられている全ての機能を含んでいる。

ブライアン・カーニハンロブ・パイクによる『UNIXプログラミング環境』の出版が Bourne Shell の人気を高めた。これはチュートリアル形式でプログラミング言語としてのシェルを紹介した最初の商業出版本である。

起源

Bourne shell は Mashey shell英語版 の代替として設計された。

当初の設計目標には、以下の事柄が含まれていた[1]

  • シェルスクリプトフィルタとして使えるようにする。
  • 制御構造変数を導入してプログラムのしやすさを向上させる。
  • 全ての入出力ファイル記述子を制御する。
  • シェルスクリプト内でシグナル処理を制御する。
  • シェルスクリプトを解釈する際の文字列長の制限を撤廃する。
  • 文字列のクォート機構を合理的かつ汎用的にする。
  • Version 7 で環境変数機構が追加された。これを利用して、シェルスクリプトが初期化時に構築した環境情報を、わざわざパラメータを使わずとも子スクリプト (子プロセス) に渡すことができる。

機能と特徴

UNIX Version 7 での Bourne Shell の機能と特徴を以下に挙げる:

  • スクリプトは、そのファイル名を使ってコマンドとして呼び出すことができる。
  • 対話的にも非対話的にも使える。
  • コマンド群の同期実行も非同期実行も可能。
  • 入出力のリダイレクトとパイプラインをサポート。
  • 組み込みコマンド群を提供。
  • フロー制御構成子、引用ファシリティ、関数を提供。
  • 型のない変数。
  • 局所と大域の変数スコープを提供。
  • スクリプトは実行前にコンパイルする必要が無い。
  • Goto機能を持っていない。
  • バッククォートを使ったコマンド置換(Command substitution): `command`
  • << を使ったヒアドキュメント(Here documents)機能。スクリプト内に埋め込まれたテキストブロックを入力として使う。
  • "for ~ do ~ done" ループ。特に、$* を使って引数列上をループする方法。
  • "case ~ in ~ esac" による選択機構。主に引数解析に使われる。
  • sh は、環境変数を使ってエクスポート可能なキーワードパラメータや変数を実現している。
  • 入出力制御と表現マッチングのために強力な機能を用意している。

また、Bourne Shell はエラーメッセージのために 2番のファイル記述子を使うという規定を最初に採用したプログラムでもある。これにより、エラーメッセージをデータと分離してスクリプトで制御することが容易になった。

スティーブン・ボーンは自身がケンブリッジ大学で関わっていた ALGOL 68C コンパイラのいくつかの特徴をこのシェルに取り込んだ。例えば、"if ~ then ~ else ~ fi"、"case ~ in ~ out ~ esac"、"for ~ while ~ do ~ od" といった構文である。さらに Version 7 のシェルはC言語で記述されているが、ボーンはそのソースコードをALGOL68風にするためにいくつかのマクロ[2]を使っている。このマクロは、IOCCCが開催される元の1つとなった(他に、4.2BSDの finger コマンドも元になっている)[3]

1979年以降に導入された機能

数年の内に AT&T は Bourne Shell を強化した。各バージョンは対応する AT&T UNIX のバージョン名で呼ばれる(主なバージョンは Version 7、SystemIII、SVR2、SVR3、SVR4)。というのも、シェルはバージョン番号が付与されていないからでもあり、区別するには実際に機能をテストしてみる必要があった[4]

1979年以降のバージョンの Bourne shell の機能(や特徴)を以下に示す[5]

  • UNIX System III(1981年)
    • test コマンドを組み込み。
    • # でコメントを書き込めるようになった。
    • コロンを使ったパラメータのデフォルト値への置換: "${parameter:=word}"
  • SVR2(1984年)
    • 関数定義が可能となり、return が組み込まれた。
    • unsetechotype を組み込み
    • ソースコードを書き換えて、ALGOL68風でなくした。
  • SVR3(1986年)
    • 現在のような "$@" の用法
    • getopts 組み込み
    • パラメータ処理を改善し、関数の再帰呼び出しが可能となった。
    • 8ビットクリーン
  • SVR4(1989年)
    • ジョブコントロール
    • 多バイト文字サポート

サンがOpenSolarisの中の Bourne Shell の派生版をオープンソースとしてリリースすると、他のフリーなUNIX系OS向けにこれを移植するHeirloomプロジェクトが開始され、利用可能となっている。Solaris や SVR4 の Bourne shell はオリジナルの ALGOL 68 風のソースコードではない。

批判

Bourne shell は、C Shell と比べて次のような欠点があると批判されてきた[6][7]

  • 対話的に使用する場合、Bourne shell は使いやすくない。C Shell には、ヒストリ機能、エイリアス機能、ジョブコントロール機能などがあり、素早く簡単に操作できる。
  • Unixシステムの大部分はC言語で書かれているが、Bourne shell の文法はC言語とは全く似ておらず、ALGOLに似ている。
  • を評価する機能がない。単純な式であっても外部の test英語版expr というユーティリティを使わないと式を評価できない。

後継

Bourne shell ではなく Thompson shell から派生した C Shell (csh) は 4.1BSD で配布され、BSDカーネルの「ジョブ制御」機能を導入した。ジョブ制御は対話的にプログラムを止めたり、後でそれを再開させる機能である[8]。C Shell がコマンドインタプリタとして人気になったのはこの機能があったためである。また C Shell は C言語風の文法を採用したことにより Bourne Shell と互換性がなくなってしまった。なお、ジョブ制御機能は後に Bourne shell にも導入され、その後継シェルの多くにも採用されている。

後にデビッド・コーンが開発した KornShell (ksh) は、Bourne Shell と C Shell の中間のようなもので、文法はほぼ Bourne Shell と同一で、ジョブ制御機能を C Shell から取り入れた。当初の KornShell (ksh88)の機能はPOSIXにおけるシェル標準の基盤となっている。その後、ksh93 が 2000年にオープンソース化され、いくつかのLinuxディストリビューションで使われている。ksh88 のクローン pdksh もあり、OpenBSDのデフォルトシェルとなっている。

Bash (Bourne Again Shell)は、その名が示す通り Bourne Shell を基本として C Shell や KornShell の機能を取り入れ、GNUプロジェクトの一部として開発された。macOSCygwin、多くのLinuxディストリビューションでデフォルトシェルとなっている。

rcは、ベル研究所トム・ダフ英語版Version 10 Unix英語版 での sh の後継として開発した。Plan 9 from Bell Labs ではデフォルトシェルとされている。Plan 9 from User Space英語版 の一部としてUNIXにも移植されたことがある。

かつてCSRGのBSDリリースでも使われた Bourne Shell には著作権問題がまとわりついていた。そこで Kenneth Almquist が Almquist Shell とも呼ばれる Bourne Shell のクローンを開発した。これはBSDライセンスで提供されていて、現在もBSD系でメモリ容量が小さい場合などに使われている。Linux にも移植され Debian Almquist shell または dash と呼ばれている。メモリ使用量が小さいため、シェルスクリプトの実行が bash よりも高速という特徴がある。

利用

Bourne shell は全ての商用UNIXシステムで標準とされているが、BSD系のシステムには C Shell で書かれたスクリプトが多数存在する。Bourne shell のスクリプトは GNU/Linux や他のUnix系システム上の bashdash でもほとんど実行可能である。

多くのLinuxシステムで、/bin/shbashへのハードリンクまたはシンボリックリンクとなっている。しかしUbuntuなどのLinuxシステムでは効率がよいことから /bin/shdash へのリンクとしている。

語録

誰も Bourne shell の文法がどうなっているかを本当には知らない。ソースコードを調べてみてもほとんど役に立たない。 — Tom Duff[9]

参考文献

脚注

  1. ^ "The A-Z of Programming Languages: Bourne shell, or sh" March 2009, Computerworld
  2. ^ Bourne, Steve (1979年1月12日). “mac.h - Macros used by Bourne to structure C like Algol68C”. AT&T. 2006年9月9日閲覧。
  3. ^ Landon Curt Noll, Simon Cooper, Peter Seebach and Leonid A. Broukhis (2004年). “The IOCCC FAQ - Q/A: How did the IOCCC get started?”. www.ioccc.org. 2006年9月9日閲覧。
  4. ^ Bourne Shell release testing script from Sven Mascheck
  5. ^ History of the Bourne Shell family
  6. ^ An Introduction to the C shell by Bill Joy.
  7. ^ Bezroukov, Nikolai (2009年8月15日). “Introduction to the Unix shell history”. 2010年9月29日閲覧。
  8. ^ G.アンダーソン、P.アンダーソン 著、落合 浩一郎、大木敦雄 訳『UNIX C SHELL フィールドガイド』パーソナルメディア株式会社、1987年10月15日、117-134頁。ISBN 4-89362-029-0 
  9. ^ Tom, Duff. “Rc — The Plan 9 Shell”. 2014年10月15日閲覧。

関連項目

外部リンク


Bourne Shell

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/30 00:52 UTC 版)

エスケープ文字」の記事における「Bourne Shell」の解説

Bourne Shell (sh) では、アスタリスク (*) と疑問符 (?) がワイルドカードとして使用されるエスケープ文字使わないと、*はカレントディレクトリ全てのファイルファイル名展開される。"*"というファイル名指したい場合は、バックスラッシュ(\)を前につける。例えば、バックスラッシュつけない場合とつけた場合で、以下のように動作が変わる。 rm * # カレントディレクトリ全てのファイル消去するrm \* # * という名前のファイル消去する

※この「Bourne Shell」の解説は、「エスケープ文字」の解説の一部です。
「Bourne Shell」を含む「エスケープ文字」の記事については、「エスケープ文字」の概要を参照ください。

ウィキペディア小見出し辞書の「Bourne_shell」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ

「Bourne Shell」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Bourne_shell」の関連用語

Bourne_shellのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Bourne_shellのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのBourne Shell (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのエスケープ文字 (改訂履歴)、Unixシェル (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2025 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2025 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2025 GRAS Group, Inc.RSS