rc (シェル)
パラダイム | 命令型, パイプライン |
---|---|
登場時期 | 1989年 |
設計者 | トム・ダフ |
開発者 | ベル研究所 |
型付け | 弱い型付け |
方言 | バイロンのrc |
影響を受けた言語 | Bourne shell |
影響を与えた言語 | es、The Inferno shell. |
プラットフォーム | クロスプラットフォーム (Version 10 Unix, Plan 9, Plan 9 from User Space) |
rc("run commands")は、Version 10 UnixとPlan 9のためのコマンドラインインターフェースである。rcはBourne shellに似ているが、その構文はより簡潔なものになっている。また、rcはトム・ダフによって作られた。彼はDuff's deviceと呼ばれるC言語の構築で有名である[1]。
オリジナルな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
- ^ “Ubuntu Manpage: es - extensible shell”. 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. 14 March 2014閲覧。
- ^ “Linux Journal 12: What's GNU”. 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 Archive.Org.
- ^ [1]
- ^ “UNIX shell differences”. Faqs.org. 2012年8月24日閲覧。
- ^ “wryun/es-shell: a shell with higher-order functions”. GitHub (13 March 2020). 13 March 2020閲覧。
外部リンク
[編集]rc(1)
- Plan 9のmanページ- Plan 9 from User Space - Linuxやmac OSなどのUNIX系システム向けのrcなどのPlan 9由来のツールを含む
- Byron Rakitzis' rewrite for Unix
- es Official website