rc("run commands")は、Version 10 UnixPlan 9のためのコマンドラインインターフェースである。rcはBourne shellに似ているが、その構文はより簡潔なものになっている。また、rcはトム・ダフによって作られた。彼はDuff's deviceと呼ばれるC言語の構築で有名である[1]

rc
パラダイム 命令型, パイプライン英語版
登場時期 1989年 (35年前) (1989)
設計者 トム・ダフ英語版
開発者 ベル研究所
型付け 弱い型付け
方言 バイロンのrc
影響を受けた言語 Bourne shell
影響を与えた言語 es、The Inferno shell.
プラットフォーム クロスプラットフォーム (Version 10 Unix, Plan 9, Plan 9 from User Space)
テンプレートを表示
An rc session

オリジナルなrcのUNIXに対するポートは、Plan 9 form User Spaceの一部としてなされた。rcのUNIX系OSへのリライトはバイロン・ラキツィスによるものも利用可能だが、それはいくつかの互換性のない変更を含んでいる。

rcは、オリジナルのBourne shellがALGOL風の構造を持つのに対して、C言語のような構造を持つ。ただし、"if not"構造を"else"の代わりに使い、リストの繰り返しにBourne shell風の"for"ループを持っている。rcにおいては"$@"のような構造を排除する必要のために、すべての変数は文のリストとなっている。変数は展開されるときに再分割されない。この言語はダフの論文に記載されている[1]

影響

編集

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は、zshbashなどのポピュラーなシェルに比べて機能が欠けている[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](パイプライン分岐)

出典

編集
  1. ^ a b c d Duff, Tom. Rc — The Plan 9 Shell. http://doc.cat-v.org/plan_9/4th_edition/papers/rc  (PDF; 1990 version)
  2. ^ Spatial Analytical Perspectives on GIS. https://books.google.com/books?id=iEK6eQQwOF0C&pg=PA43&redir_esc=y#v=onepage&q&f=false 
  3. ^ Ubuntu Manpage: es - extensible shell”. Manpages.ubuntu.com (1992年3月5日). 2014年2月24日時点のオリジナルよりアーカイブ。2012年8月24日閲覧。
  4. ^ Extensible Shell”. FOLDOC. 2012年8月24日閲覧。
  5. ^ Shells Available for Linux”. LUV. 2012年8月24日閲覧。
  6. ^ Jones, Tim. “Evolution of shells in Linux”. IBM. 14 March 2014閲覧。
  7. ^ Linux Journal 12: What's GNU”. 2013年1月17日時点のオリジナルよりアーカイブ。2012年8月24日閲覧。
  8. ^ Es: A shell with higher-order functions by Byron Rakitzis, NetApp, Inc, and Paul Haahr, Adobe Systems Incorporated; Archived at Archive.Org.
  9. ^ [1]
  10. ^ UNIX shell differences”. Faqs.org. 2012年8月24日閲覧。
  11. ^ wryun/es-shell: a shell with higher-order functions”. GitHub (13 March 2020). 13 March 2020閲覧。

外部リンク

編集