Unixシェル
Unixシェルは、Unix系オペレーティングシステムで用いられるコマンドラインシェルの総称である。

Unixシェルは、Unix系オペレーティングシステムで用いられるコマンドラインシェルの総称である。
1970年代にUnix環境向けに設計されたコマンド解釈言語およびその処理系として成立し、以後のUnix系システムにおける標準的な操作手段およびスクリプト実行環境として位置づけられる。
システム管理、プログラム起動、処理自動化などに用いられ、パイプライン処理、入出力リダイレクト、制御構造を備えた独自のコマンド言語を特徴とし、その実装は多様な派生シェルを生んだ。
概念
「シェル」を最も広い意味で捉えれば、コマンドを入力するためにユーザーが使用するプログラムといえる。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の一部として開発された[1]。
- Yet another shell (yash): 2007年開発。C99で書かれており、POSIX.1-2008に完全に準拠している。
- Z Shell (zsh): 最も機能が豊富なシェル。sh、ash、bash、csh、ksh、tcshの上位互換相当の機能を持つ。macOS Catalina 10.15 以降のmacOSでデフォルトのシェルとされている[2]。
C Shell 互換
- C Shell (csh): ビル・ジョイがカリフォルニア大学バークレー校で開発。1978年にBSDの一部として配布された[3]。
- TENEX C shell (tcsh)
- Hamilton C shell: Nicole HamiltonがOS/2 (1988) と Windows (1992) 向けに開発[4]。
その他
- es: Plan 9 from Bell Labs (Plan 9) のrcに基づいた関数型プログラミングのシェル(1990年代中ごろ)[5]
- fish: 2005年リリース
- Perl Shell (psh): Unix系およびWindows向けのシェル。bashとPerlの機能を統合。
- pysh: IPythonプロジェクトの特殊プロフィール。Python用シェルとシステム用シェルをシームレスに統合[6]。
- rc: Plan 9 と Version 10 Unix でのデフォルトのシェル。Tom Duffが開発。各種Unix系OSにも移植されている。
- scsh: Schemeで書かれたシェル
- wish: Tcl/Tk用のウィンドウ型シェル(Tcl/Tkパッケージの一部)
- zoidberg: Perlのみで書かれているモジュール化されたシェル[7]
様々なシェルの一覧は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." - 対話型のシェルとして起動した場合に読み込む。
脚注
注釈
出典
- ^ “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
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.