Unixシェル
- العربية
- Azərbaycanca
- Català
- Čeština
- Dansk
- Deutsch
- English
- Español
- Euskara
- فارسی
- Français
- हिन्दी
- Magyar
- Bahasa Indonesia
- Italiano
- ქართული
- 한국어
- മലയാളം
- Монгол
- Norsk nynorsk
- Norsk bokmål
- Português
- Русский
- Srpskohrvatski / српскохрватски
- Simple English
- Српски / srpski
- Svenska
- Тоҷикӣ
- ไทย
- Türkçe
- Українська
- 中文
- 粵語
Unixシェルは、Unix系 オペレーティングシステム (OS) におけるコマンドライン シェルである。ユーザインタフェースとして対話的に利用したり複数のコマンドを並べたシェルスクリプトを実行する。
最も影響を与えたUnixシェルとしては、Bourne ShellとC Shellがある。Bourne Shellは単にshと呼ばれ、AT&Tでスティーブン・ボーンが開発し、UNIXで広く普及していたコマンドラインインタプリタである。パイプ、ヒアドキュメント、コマンド置換 (英語版)、変数、条件式やループといった制御構造、ワイルドカードによるファイル名指定などの機能が他の全てのUnixシェルに共通する機能の出発点となった。言語としては、ブロックの終りを逆から綴った(ファイル)キーワードで示すなど、ALGOL 68に影響を受けている[1] 。
C Shell (csh) はビル・ジョイがカリフォルニア大学バークレー校の大学院生のときに開発した。C言語をモデルとして制御構造や式の文法を設計している。対話型シェルとして、ヒストリ機能、編集機構、エイリアス、ディレクトリスタック、チルダ記法、cdpath、ジョブコントロール、パスハッシングといった機能を導入した。
これら2つのシェルがベースとなって、様々なシェルが派生していった。
概念
[編集 ]「シェル」を最も広い意味で捉えれば、コマンドを入力するためにユーザーが使用するプログラムといえる。Unix系OSでは、対話型セッションのためのコマンドラインインタフェースには様々な選択肢がある。ユーザーがシステムにログインすると(GUI環境でない場合は)シェルプログラムが自動的に実行開始する。このログインシェルはユーザー毎にカスタマイズできる。passwd ファイルで起動するシェルプログラムを指定でき、passwd -e コマンドまたはchsh (英語版)コマンドで変更することもできる。また、ユーザーは別のシェルプログラムを対話的に起動することもできる。
Unixシェルが登場した当時、このようなプログラムは珍しかった。対話型のコマンド言語であると同時にスクリプト言語としても使え、システムの制御ファシリティとしてOS自体もそのスクリプトを使用している。シェルの考え方はUNIX以外にも広まっていった。
ウィンドウシステムを持つシステムでは、ユーザーがシェルを直接使わないことも多い。Unix系OSでは、システムの立ち上げスクリプト群がシェルスクリプトで書かれており、ウィンドウシステムの起動もインターネットへのアクセスのためのプログラム起動もその他の様々な機能の起動もそのようなスクリプトで行う。
初期のシェル
[編集 ]Bourne Shell
[編集 ]Bourne Shellはスティーブン・ボーンがベル研究所で開発し、1977年ごろVersion 7 Unix の一部として配布され、当時のデファクトスタンダードであった。Unix系OSには必ずBourne Shellかその互換シェルが含まれていた。コマンドとしての名称はshで、UNIXのファイル階層では一般に/bin/shというパスにある。/bin/shはBourne Shellと互換性がある機能拡張されたシェルへのソフトリンクまたはハードリンクである。POSIXでは標準のシェル機能としてKornShellのサブセットを指定しており、現在はPOSIXシェルに置き換わったためBourne Shellは使われていない。
C Shell
[編集 ]C Shellはビル・ジョイがカリフォルニア大学バークレー校でUnix系OSの一系統の元となったBSD向けに開発した。Version 6 UnixのThompson shellをベースとしている。C言語をモデルとして構文規則を設計した。対話型の端末で使用することを第一に考えて設計されており、スクリプト言語としてはあまり使われない。C Shellには様々な対話用コマンドがある。
分類
[編集 ]Bourne Shell 互換
[編集 ]- Bourne Shell (sh): スティーブン・ボーンがベル研究所で開発。1978年ごろ、Version 7 Unixの一部として配布され、その後も改良されていった。
- Almquist Shell (ash): Bourne ShellのBSDライセンス版として開発。小さいので、リソースが少ない環境でよく使われている。FreeBSDおよびNetBSDではashをPOSIX準拠に改良したものがshとして使われている。
- Bourne-Again shell (bash): GNUプロジェクトの一環でBourne Shellのオープンソース版として開発。多くのLinuxディストリビューションでデフォルトのシェルとされている。
- Debian Almquist shell (dash): DebianとUbuntuでashの代替として使用。
- KornShell (ksh): デビッド・コーン (英語版)がベル研究所で開発。
- Public domain Korn shell (pdksh): kshからの派生。
- MirBSD Korn shell (mksh): OpenBSDの/bin/kshとpdkshの後継としてMirOS BSDの一部として開発された[2] 。
- Yet another shell (yash): 2007年開発。C99で書かれており、POSIX.1-2008に完全に準拠している。
- Z Shell (zsh): 最も機能が豊富なシェル。sh、ash、bash、csh、ksh、tcshの上位互換相当の機能を持つ。macOS Catalina 10.15 以降のmacOSでデフォルトのシェルとされている[3] 。
C Shell 互換
[編集 ]- C Shell (csh): ビル・ジョイがカリフォルニア大学バークレー校で開発。1978年にBSDの一部として配布された[4] 。
- TENEX C shell (tcsh)
- Hamilton C shell: Nicole HamiltonがOS/2 (1988) と Windows (1992) 向けに開発[5] 。
その他
[編集 ]- es: Plan 9 from Bell Labs (Plan 9) のrcに基づいた関数型プログラミングのシェル(1990年代中ごろ)[6]
- fish: 2005年リリース
- Perl Shell (英語版) (psh): Unix系およびWindows向けのシェル。bashとPerlの機能を統合。
- pysh: IPythonプロジェクトの特殊プロフィール。Python用シェルとシステム用シェルをシームレスに統合[7] 。
- rc: Plan 9 と Version 10 Unix でのデフォルトのシェル。Tom Duffが開発。各種Unix系OSにも移植されている。
- scsh: Schemeで書かれたシェル
- wish: Tcl/Tk用のウィンドウ型シェル(Tcl/Tkパッケージの一部)
- zoidberg: Perlのみで書かれているモジュール化されたシェル[8]
様々なシェルの一覧はwww.freebsd.orgにある。
歴史的シェル
[編集 ]- Thompson shell (sh): 最初のUnixシェル。ベル研究所のケン・トンプソンが開発。バージョン 1 (1971) から 6 (1975) までのUNIXの一部として配布された。現代から見れば非常に原始的である。一部のAncient UNIXで利用可能だが、一般には使われていない。
- PWB shellまたはMashey shell (sh): Thompson shellの改良版。ベル研究所のJohn Masheyらが改良を行った。1976年ごろProgrammer's Workbench UNIXの一部として配布された。
主なUnixシェルの設定ファイル
[編集 ]シェルは様々な場面で設定ファイルを読み込むが、詳細はシェルの種類によって異なる。設定ファイルにはそのシェル向けのコマンド群が書かれており、ロードされると同時に実行される。実行ファイルの探索パスを指定する $PATH のような重要な変数を設定したり、シェルの振る舞いや見栄えを制御する変数を設定したりする。次の表は代表的なUnixシェルの設定ファイルについてまとめたものである。
| sh | ksh | csh | tcsh | bash | zsh |
|---|---|---|---|---|---|
/etc/.login
|
login | login | |||
/etc/csh.cshrc
|
yes | yes | |||
/etc/csh.login
|
login | login | |||
~/.tcshrc
|
yes | ||||
~/.cshrc
|
yes | yes[注釈 1] | |||
~/.login
|
login | login | |||
~/.logout
|
login | login | |||
/etc/profile
|
login | login | login | login | |
~/.profile
|
login | login | login[注釈 2] | login | |
~/.bash_profile
|
login[注釈 2] | ||||
~/.bash_login
|
login[注釈 2] | ||||
~/.bash_logout
|
login | ||||
~/.bashrc
|
int.+n/login | ||||
/etc/zshenv
|
yes | ||||
/etc/zprofile
|
login | ||||
/etc/zshrc
|
int. | ||||
/etc/zlogin
|
login | ||||
/etc/zlogout
|
login | ||||
~/.zshenv
|
yes | ||||
~/.zprofile
|
login | ||||
~/.zshrc
|
int. | ||||
~/.zlogin
|
login | ||||
~/.zlogout
|
login |
凡例:
- 空白のマスは、そのシェルではそのファイルを全く読み込まないことを意味する。
- "yes" - そのシェルの起動時に必ず読み込む。
- "login" - そのシェルがログインシェルだった場合に読み込む。
- "n/login" - そのシェルがログインシェルでなかった場合に起動時に読み込む。
- "int." - 対話型のシェルとして起動した場合に読み込む。
脚注
[編集 ]注釈
[編集 ]出典
[編集 ]- ^ Re: Late Bloomers Revisited USENET post to comp.lang.misc by Piercarlo "Peter" Grandi, Dept of CS, UCW Aberystwyth, UK, Dec 17, 1989.
- ^ "The MiriBSD Korn Shell". MirOS. 2012年7月8日閲覧。
- ^ "Use zsh as the default shell on your Mac - Apple Support". Apple. 2022年4月8日閲覧。
- ^ Harley Hahn, Harley Hahn's Guide to Unix and Linux.
- ^ Hamilton C shell for Windows Release Notes 4.0, retrieved June 19, 2010.
- ^ "es-shell". Google Code. 2012年7月8日閲覧。
- ^ "pysh". Sourceforge.jp. 2012年7月8日閲覧。
- ^ "Zoidberg". CPAN. 2012年7月8日閲覧。
参考文献
[編集 ]- Ellie Quigley (2001). "Introduction to UNIX shells". Unix Shells by Example. Prentice Hall PTR. ISBN 013066538X — 各種シェルの歴史と使用法など
関連項目
[編集 ]外部リンク
[編集 ]- Introduction to the Unix shell history (Softpanorama)
- Sven Mascheck. The Traditional Bourne Shell Family History and Development. Version 2009年02月12日; Last accessed March 6, 2009
- Bourne shell, or sh (interview with Steve Bourne, Computerworld, March 5, 2009)
- Linux Shell Scripting Tutorial - A Beginner's handbook
- Different Shells in Linux