rcとは、「run command」の略で、何らかのタスクの初期設定や起動時に自動実行するコマンドを列挙したファイルに付けられる名前だ。例えば、現在Mac OS Xでデフォルトのシェルとして使われているBashが初期に読み込むファイルの1つが.bashrcだが、この後ろの部分に付いている「rc」は、まさにこの「rc」である。

UNIXでもっとも有名かつ重要なrcは/etc/rcであろう。これはUNIXで最初に起動するプロセスであるinitが読み込むスクリプトで、シェルを使って実行される。システムの初期設定やバックグラウンドサービスを記述するために用意されているのがこのrcなのだ。こうしたコードがシェルスクリプトであるのはUNIXのUNIXたるところで、テキストファイルであるからこそ可読性に優れ、個別のシステム独自の事情を自由に組み込める、カスタマイズが容易であるという利点がある。

初期のUNIXでは単純に/etc/rcの1ファイルだけであったが、後に/etc/rcを起点に複数のファイルを利用する形態に変化していった。UNIXディストリビューション標準の設定を定めた/etc/rcと、サイト固有の事情を記入する/etc/rc.localに分けてアップデートを容易にするところから始まり、System Vではサービスごとにファイルを分けファイル名に数値を入れることで起動順序を制御。またFreeBSDなどではrc.confという設定専用のファイルを用意したりなど、UNIXごとにいろいろな流儀が生まれていった。

しかし、どのUNIXでも、それからLinuxでも、initが起動し、rcを実行するという形態には変化がなかった。

最初に一石を投じたのはMac OS X 10.4 "Tiger"だ。Tigerではinitに代わりlaunchd( 注1 )というサービスが最初に起動するようになった。launchdはinitより柔軟であり、起動処理だけではなくネットワークからの接続や時刻による実行など、システムの様々なイベントに対応する処理を取り仕切っている。Ubuntuではlaunchdに触発され、「Upstart」を開発している。

しかし、Tigerでもrcは存在した。その中ではカーネルのパラメータ設定や一時ファイルの清掃などが行われていた。また、rcの中ではSystemStarterが呼び出されている。SystemStarterはMac OS X10.0からあるサービスで、StartupItemと呼ばれるスクリプトを適切な順序で起動時に実行していくものだ。ちょうど、LinuxのSysV initにも相当する。launchdが開発され、そうした仕組みがLaunchDaemonやLaunchAgentに重心が移ったTigerでもまだ利用されていた。

一方Leopardでは、rcがない。どういうことかは「man 8 rc」(注2)を実行してみるとはっきりと書かれている(リスト3)。

起動処理として必要なことはlaunchdが自分でやるため、rcはいらなくなったのだ。

リスト3: 「man 8 rc」の内容


RC(8)                     BSD System Manager's Manual                    RC(8)

NAME
     rc -- command script for boot

SYNOPSIS
     rc
     rc.local

DESCRIPTION
     Prior to Mac OS X 10.5, the rc script was used to bootstrap the OS. As of
     Leopard, the system is self-bootstrapped via launchd(8) which uses the
     launchctl(1) bootstrap subcommand to read in launchd jobs from the stan-
     dard locations.  For compatibility reasons, the rc.local script still
     continues to work.

     The startup file rc.local reside in /etc.

SEE ALSO
     launchd(8), launchctl(1)

Darwin                           May 31, 2006                           Darwin
注1: launchd
launchdの詳細については、ソフトバンク クリエイティブの「オープンソースマガジン」のバックナンバー(2005年12月号)や、ムック「Professional Mac OS X」に掲載された筆者執筆の連載「Undocumented Mac OS X」を参照されたい。

注2: 「man 8 rc
UNIX由来のオンラインドキュメントであるmanは、隠れたMac OS Xの情報源の1つ。意外にメンテナンスされているので、一読をお勧めする。