最近,UNIX 仮想端末のシェルは bash(Bourne Again Shell)の全盛だといってよい。しかし,BSD UNIX を昔から使っているユーザは,いまだに tcsh(Tenex C Shell)を手放せないのではないだろうか。昔は System V UNIX では sh(Bourne Shell)が,BSD UNIX では csh(C Shell)がシステム標準のシェルであった。BSD UNIX でのかつての tcsh 流行は,その拡張である。思うに,BSD UNIX のユーザは,端末操作では tcsh を使い,シェルスクリプトはどの UNIX にも組込まれている sh で書く,というのが一般的だった。私もそんな慣例に縛られたユーザのひとりである。機能の良し悪しというよりは慣れの問題で bash に鞍替えできないのである。
さて,tcsh は NLS(Native Language System: XPG4 に準拠した,システムの各コマンドを多言語対応にするための仕組み)によりコマンドメッセージを多言語化することができ,これをカタログファイルとして外部から与えることができる。インターネットでは,tcsh ユーザが作成した愉快なカタログファイルが出回っている。
私はそのなかから『新世紀エヴァンゲリオン』の主人公・綾波レイ風のカタログファイル(CyberKnight Tekkaman Blade 氏作)を久しく使わせてもらっている。メールを受信すると「碇君 新しいメール あるから...」,タイプミスをすると「コマンド 見つからない...」などなど,綾波レイ風のメッセージをシステムが返すわけである。ユーザは碇シンジ君に見立てられているということか(そのように昔の BSD UNIX 使いは内向的で,独特の偏向を帯びていたといえなくもない)。まあ,遊び,アクセサリーのようなものである。
FreeBSD はかつてはこうしたキャラ風カタログファイルを japanese ports によって提供し,これを簡単にインストールできるようになっていた。残念ながら,最近の Linux 優勢の影響で tcsh の人気がほぼ根絶されたせいか,ports から削除されてしまった。参考までに,カタログファイルソースをインターネットから取り寄せ,FreeBSD システムに設定するメモをしるしておく。tcsh シェルの環境変数 LANG 及び LC_ALL には ja_JP.eucJP がセットされているものとする。Linux でもロケール仕様以外は同様の操作が適用できると思う。
- tcsh version 確認
組込まれた tcsh において "nls" というオプションがあるか確認する。そのためには "set | grep tcsh" を発行すればよい。最近の FreeBSD なら OK のはず。もしバージョンが 6.14 未満であれば,ports でそれ以上に更新する。% set | grep tcsh shell /bin/tcsh tcsh 6.14.00 version tcsh 6.14.00 (Astron) ... options wide,nls,dl,al,kan,...
- カタログファイルの入手と生成
『tcsh日本語オリジナルカタログ』サイト(榊原善之氏による)よりアーカイブを適当なディレクトリにダウンロードし,解凍する。その後,make を実行する。% tar zxvf tcsh-6.14.00.add.tar.gz -C ~/tmp % cd ~/tmp/tcsh-6.14.00.add % make -f Makefile.add
すると,カレント・ディレクトリ直下に,tcsh.ja.xxxxx.[cat, m] のファイル群が生成される。この Makefile は NLS カタログファイルソースから gencat ユーティリティによってカタログファイルを生成するレシピである。既成のファイルを複写して,構成をまねて独自のカタログファイルを作成するのも面白いだろう。 - カタログファイル・ディレクトリの作成
できたカタログファイルを ~/lib/tcsh ディレクトリ(名前は任意)にコピーする。その後,NLSPATH 環境変数に位置情報をセットする。.tcshrc にも環境変数の定義を追加しておく。% mkdir -p ~/lib/tcsh % cp ~/tmp/tcsh-6.14.00.add/tcsh.ja.* ~/lib/tcsh % setenv NLSPATH $HOME/lib/tcsh/%N
- カタログファイルの指定
自分が使いたいカタログファイルを set catalog=ja.xxxxx.cat のように tcsh に指示する。このコマンドで別のカタログファイルを指定するつど,メッセージが変わるので試してみてほしい。どのようなカタログファイルが添付されているかは,『tcsh日本語オリジナルカタログ』サイトを参照のこと。綾波レイ風の場合は次のとおり。これも .tcshrc に追記しておくとよい。% set catalog=ja.ayanami.cat
『新世紀エヴァンゲリオン』に限っていえば,惣流・アスカ・ラングレー風(東工大松田氏作)も同じアーカイブに含まれていて,set catalog=ja.asuka.cat とすればよい。すると場合によっては,「あんた,バカー?」と罵られることになる。
何気に,続けてアニメにかかわる記事となってしまった。