Macaulay 2 は大変な環境変数を設定していきました

昨日、ふと Terminal で

man cp

とやってみたのだが、お返事が

No manual entry for cp

だって…お姉さんびっくりだぁ!


…と、ホントにびっくりした。一体どうした?cp コマンド以外もすべて No manual entry である。いつの間にこんなことに…
で、UNIX 入門書を震える指でめくりつつ調べてみると、どうやら /usr/share/man/ 以下に man の中身はちゃんといらっしゃるようだ。よって、環境設定 MANPATH の値がマズいことになっている予感がしてきた。しかし、誰がそんな「マズいこと」をやらかした?犯人を探しに ~/.cshrc を覗いてみると*1

## Macaulay 2 start

(中略)

if ( $?MANPATH == 1 ) then
  switch ("$MANPATH")
    case "/Applications/Macaulay2-0.9.95/share/man":
    case "/Applications/Macaulay2-0.9.95/share/man:*":
    case "*:/Applications/Macaulay2-0.9.95/share/man":
    case "*:/Applications/Macaulay2-0.9.95/share/man:*":
       breaksw
    case "":
       setenv MANPATH "/Applications/Macaulay2-0.9.95/share/man"
       breaksw
    default:
       setenv MANPATH "/Applications/Macaulay2-0.9.95/share/man:$MANPATH"
       breaksw
  endsw
else
  setenv MANPATH "/Applications/Macaulay2-0.9.95/share/man"
endif

(中略)

## Macaulay 2 end

と書きこまれているのを見つけた*2。先日インストールした Macaulay 2 だが、こんなところにも手を加えていたようで…これを見ると、環境変数 MANPATH が未設定の場合(私の環境では多分そうだったのだろう)、「/Applications/Macaulay2-0.9.95/share/man」を唯一の値として設定するようである。そして、環境変数 MANPATH の値は /usr/share/misc/man.conf に書かれている設定を上書きしてしまう。……というカラクリかな?


対処として、要は MANPATH に /usr/local/share/man や /usr/share/man も一緒に設定してやればきちんと行くように思われたので、そのようにして、実際、問題は解決した。man ページが戻ってきたよ!おかげで man man して、man ページの検索パスについての説明を読んで、改めて上に書いたように原因と対策を考察したりできる訳です。いやはや、勉強になりました……

*1:私は Jaguar 以前からの癖でログインシェルに tcsh を使っています

*2:あとで調べたら .bashrc や .login にも同じ趣旨の内容が書き加えられていた