Louis Pouzin は1963 年頃に CTSS 用の RUNCOM を作成しました。[ 2 ]彼は 1965 年にMulticsシェルの設計を記述した論文を発表し、その中に RUNCOM の簡単な説明が含まれていました。[ 3 ]その後 5 日後には、制御フロー、条件分岐、ループのコマンドを追加した RUNCOM の設計を記述した 2 番目の論文を発表しました。[ 4 ]
Unix系システムにおいては、「rc」という用語は「実行コマンド」を意味します。これは、コマンドの起動情報を含むあらゆるファイルに対して使用されます。
ブライアン・カーニハンとデニス・リッチーより:[ 5 ] [ 6 ]
ファイルに保存された一連のコマンドを実行する機能がありました。それは「runcom」(run commandsの略)と呼ばれ、そのファイルも「runcom」と呼ばれるようになりました。Unixのrcは、その使用法の名残です。
Multics のエンジニアであるTom Van Vleckも、拡張子 rc について次のように回想しています。「コマンド処理シェルを通常のスレーブ プログラムにするというアイデアは Multics の設計から来ており、Louis Pouzin による CTSS 上の前身プログラムである RUNCOM が、一部の Unix 設定ファイルの '.rc' サフィックスの元になっています。」[ 7 ]
これは、ベル研究所のトム・ダフが開発したPlan 9シェル、rcシェルの名前の由来でもあります。シェルの主な役割は「コマンドを実行すること」であるため、「rc」という名前が付けられました。
歴史的に厳密な定義ではないものの、rcは「実行制御」を意味することもあります。なぜなら、rcファイルはプログラムの実行方法を制御するからです。例えば、エディタのVimは、.vimrcファイルの内容を読み込んで初期設定を決定します。『The Art of Unix Programming』の中で、Eric S. Raymondはrcファイルを一貫して「実行制御」ファイルと呼んでいます。
RUNCOM は UNIX シェルのような意味でのシェルではありません。ユーザーが CTSS にコマンドを入力すると、UNIX シェルのようなプログラムではなく、スーパーバイザー (カーネル) にコマンドが送信されます。ユーザーは RUNCOM にコマンドを入力することはできません。RUNCOM はディスク ファイルを処理します。CTSS ファイルは、CMSと同様に、スペースで区切られた名前と名前の並びを持ちます (例: FOO BCD ) 。
RUNCOM コマンドチェーン(マクロコマンドとも呼ばれる。どちらの用語もスクリプトを意味する)は、RUNCOM または BCD のいずれかのセカンダリ名を持つファイルで、0 行以上の内容が含まれています。スクリプト内の行は、空白行、コメント、通常のコマンド(スーパーバイザーのコマンドラインに入力できる種類のコマンド)、または擬似コマンド(RUNCOM のみに組み込まれているコマンド)CHAIN のいずれかです。
コメントは、行頭に$または のいずれかの文字で始まります。 を使用したコメントは、RUNCOM の実行時に( を含む)出力されますが、 を使用したコメントは一切出力されません。コメント内ではパラメータ置換は行われません。*$$*
ユーザーがRUNCOMを呼び出す場合、その引数(パラメータ)は、まずスクリプトを含むファイルの名前で始まる必要があります。ユーザーが引数なしでRUNCOMを呼び出すと、使用方法に関する説明が表示され、処理が停止して、ユーザーはスーパーバイザー(システム)のコマンドラインに戻ります。残りの引数は、コマンド名、スクリプト内で引数として使用する値、または括弧を含む文字列(NIL)または(END)のいずれかです。
スクリプトでは、CHAIN は RUNCOM が呼び出されたときにコマンドラインで使用された引数に名前を付けます。たとえば、CHAIN LALA FAFAスクリプトに を記述して を実行すると、スクリプト内の LALA は CHAIN の後に続く行で使用されるときに 3 に置き換えられますが、FAFA は RUNCOM が何も指定せずに呼び出されたため FAFA のままになります。RUNCOM XYZZY 3
RUNCOM の引数が (NIL) の場合、スクリプト内で CHAIN の引数として指定されている位置パラメータは何も展開されません。たとえば、と組み合わせると、ALPHA は A に、GAMMA は B に置き換えられ、BETA はスクリプト内の CHAIN に続くすべてのコマンドから削除されます。CHAIN ALPHA BETA GAMMARUNCOM A (NIL) B
RUNCOM引数が(END)の場合、対応するCHAIN引数は(NIL)として扱われ、以降のすべての引数も(NIL)として扱われます。
のパラメータはCHAIN、スクリプト内でコマンド名として使用できます。つまり、引数の前に記述できます。例として、RUNCOM SCRIPT LISTFとを組み合わせてCHAIN CMD、次の行の先頭にCMDを記述します。CMDはに置き換えられ、LISTFディレクトリ内のファイルの一覧が表示されます(Unixlsコマンドと同様)。
置換が完了すると、RUNCOM はコマンドを SCHAIN ライブラリサブルーチンに送信します。このサブルーチンは他のプログラムからも利用可能です。[ 1 ]
{{cite web}}: CS1 maint: bot: 元の URL の状態が不明です (リンク)