Snow Leopard時代のパス管理術

海上忍
2010-10-12 20:24:15
  • このエントリーをはてなブックマークに追加

 日々の修練に「パス」は重要……といっても球技ではなく、コマンドサーチパスの話。この設定を忘れると、ビギナーは使いたいコマンドが見つからずに泣き、パワーユーザーは舌打ちしつつ~/.profileや~/.bashrcあたりをイジることになる。

 そのコマンドサーチパス、OS XではLeopardのときに改良されている。PATH環境変数が参照されることは、UNIXの流儀そのままだが、新設された「/usr/libexec/path_helper」コマンドを使うことで、管理を単純化したのだ。なお、このpath_helperコマンドはLeopard当時シェルスクリプトだったが、Snow Leopardの現在ではバイナリ化されている。

 このpath_helperは、実行されると/etc/pathsの内容を読み込み、PATH環境変数に設定する。そのためLeopard以降のシステムでは、どのようにシェルが起動されようと滞りなくコマンドサーチパスが設定されるよう、bashなどBシェル用の「/etc/profile」、tcshなどCシェル用の「/etc/csh.login」、zsh用の「/etc/zshenv」に、path_helperを実行するための記述が施されている。

 つまり、任意のディレクトリをコマンドサーチパスに加える場合には、echoコマンドを使い(リダイレクトで)/etc/pathsの末尾へパスを追加すればいい。実際には、/etc/pathsには一般ユーザーの権限では書き込みできないため、次のようにsudoコマンドを組み合わせて実行することになるはずだ。

$ sudo sh -c 'echo "/Applications/pTeX.app/teTeX/bin" >> /etc/paths'

 path_helperを利用したパスの追加には、もう1つの方法がある。パスのみが記述された適当な名前のファイルを作成し、/etc/paths.dディレクトリに保存するというもので、/etc/pathsの場合と同じくPATH環境変数にパスが登録される。

 このディレクトリの内容は、/etc/pathsの読み込み処理完了後、アルファベット順に読み込まれる。一般的には、/etc/pathsファイルに優先度の高いパスを記述し、/etc/paths.dディレクトリ以下には優先度の低いパスが書かれたファイルを保存する、という運用方法になるだろう。なお、前掲のコマンドラインを/etc/paths.d向けに書き換えると、次の要領となる。

$ sudo sh -c 'echo "/Applications/pTeX.app/teTeX/bin" > /etc/paths.d/TeXpath'