rc("run commands")は、Version 10 UnixとPlan 9のためのコマンドラインインターフェースである。rcはBourne shellに似ているが、その構文はより簡潔なものになっている。また、rcはトム・ダフによって作られた。彼はDuff's deviceと呼ばれるC言語の構築で有名である[1]。
パラダイム | 命令型, (パイプライン) |
---|---|
登場時期 | 1989年 |
設計者 | (トム・ダフ) |
開発者 | ベル研究所 |
型付け | 弱い型付け |
方言 | バイロンのrc |
影響を受けた言語 | Bourne shell |
影響を与えた言語 | (es)、The Inferno shell. |
プラットフォーム | クロスプラットフォーム (Version 10 Unix, Plan 9, (Plan 9 from User Space)) |
オリジナルなrcのUNIXに対するポートは、(Plan 9 form User Space)の一部としてなされた。rcのUNIX系OSへのリライトはバイロン・ラキツィスによるものも利用可能だが、それはいくつかの互換性のない変更を含んでいる。
rcは、オリジナルのBourne shellがALGOL風の構造を持つのに対して、C言語のような構造を持つ。ただし、"if not
"構造を"else
"の代わりに使い、リストの繰り返しにBourne shell風の"for
"ループを持っている。rcにおいては"$@
"のような構造を排除する必要のために、すべての変数は文のリストとなっている。変数は展開されるときに再分割されない。この言語はダフの論文に記載されている[1]。
影響
es
es("extensible shell")は、ラキツィスとポール・ハウァーによって開発[2]された、オープンソースのコマンドラインインターフェースで、rcシェルに影響を受けたスクリプト言語の構文を利用している[3][4]。esは、ラツキィスによるUNIXのためのrcのクローン のコードをオリジナルのベースにしている[5][6]。
es(="extensible shell")は、UNIXシェルとして、完全な関数型プログラミング言語を提供することを意図している[7]。esの大部分の開発は1990年代の初頭に始まり、1993年冬のサンディエゴにおけるUSENIXの会議において紹介された後[8]、公式の リリースは1997年の0.9-beta-1以後やめられた[9]。また、esは、zshやbashなどのポピュラーなシェルに比べて機能が欠けている[10]。es
のパブリックドメインな派生版は2019年現在でも開発されている[11]。
例
Bourne shellスクリプト
if [ "$1" = "hello" ]; then echo hello, world else case "$2" in 1) echo $# 'hey' "jude's"$3;; 2) echo `date` :$*: :"$@":;; *) echo why not 1>&2 esac for i in a b c; do echo $i done fi
はrcでは以下のように表記される。
if(~ $1 hello) echo hello, world if not { switch($2) { case 1 echo $#* 'hey' 'jude''s'^$3 case 2 echo `{date} :$"*: :$*: case * echo why not >[1=2] } for(i in a b c) echo $i }
Rcはまた、より動的なパイプをサポートしている。
a |[2] b # aの標準エラー出力のみbへパイプする — Bourne shellにおける'3>&2 2>&1 >&3 | b'と等価である[1](Advanced I/Oリダイレクト) a <>b # aの標準入力および標準出力としてファイルbを開く a <{b} <{c} # a {bの標準出力} {cの標準出力}となる。"(プロセス置換)"という名前でよく知られている[1](パイプライン分岐)
出典
- ^ a b c d Duff, Tom. Rc — The Plan 9 Shell (PDF; 1990 version)
- ^ Spatial Analytical Perspectives on GIS
- ^ “”. Manpages.ubuntu.com (1992年3月5日). 2014年2月24日時点のオリジナルよりアーカイブ。2012年8月24日閲覧。
- ^ “Extensible Shell”. FOLDOC. 2012年8月24日閲覧。
- ^ “Shells Available for Linux”. LUV. 2012年8月24日閲覧。
- ^ Jones, Tim. “Evolution of shells in Linux”. IBM. 2014年3月14日閲覧。
- ^ “”. 2013年1月17日時点のオリジナルよりアーカイブ。2012年8月24日閲覧。
- ^ Es: A shell with higher-order functions by Byron Rakitzis, NetApp, Inc, and Paul Haahr, (Adobe Systems Incorporated); Archived at .
- ^ [1]
- ^ “UNIX shell differences”. Faqs.org. 2012年8月24日閲覧。
- ^ “wryun/es-shell: a shell with higher-order functions”. GitHub (2020年3月13日). 2020年3月13日閲覧。