- コマンドラインで日本語を - on Mac OS X 3(3)/16422 更新:2013/05/19

←vimとnvi-m17nのページへ

日本語lessのページへ→


注意このページの内容については、何ら動作を保証するものではありません。使用するときは個人の責任でお願いします。

bashとtcsh

ところで、JTerminalと、日本語が通るvi(クローン)エディタを使って日本語の文章を作ることはできるようになりましたが、コマンドライン上で日本語は入力できるのでしょうか? やってみると分かりますが、日本語を入力し確定したところで、文字化けした文字列が表示されるか、何も表示されません。まぁ、コマンドライン上で日本語を入力したいことはあまりないとは思いますが、例えば、grepを使って日本語で書かれた文字列を検索したい時などに使うこともありますので、ここは、日本語を入力できるようにしたいところです。

ということで、次は日本語入力可能なshellの話です。

bash

Mac OS Xに標準で使用できるように設定されているshellはMac OS X 10.2以前ではtcshで、10.3ではbashになっています。10.2以前のtcshでは、8bitスルーでないため、日本語の入力ができず、10.3のbashでは適切に設定しないと日本語入力ができません。tcshで日本語入力する方法についてはのちほど話すことにして、先に簡単なbashの話をしたいと思います。

bashは元々、8bitスルーでもあるようですから、bashの動作環境を適切に設定してやれば、それだけで日本語の入力ができるようになります。具体的には環境変数LANGをja_JP.eucJPに指定(日本語EUCの場合。UTF-8ならja_JP.UTF-8)しておいてから、bashを起動してみて下さい。JTerminalを使っているなら、環境設定 -> プログラム -> 環境変数で設定するだけです。

しかし、OS X付属のTermanalでは予め環境変数を設定しておくことができません。このようなときはOS X(というかFinder)ログイン時に設定される環境変数を指定しておくことで回避できます。具体的には以下の通りです。

  1. ~/.MacOSXというディレクトリを作成する。
  2. ~/.MacOSXディレクトリに移動し、environment.plistという名前のファイルを作成する。
  3. environment.plistを編集し、plist(XML)型式でLANGにja_JP.eucJPという値を設定する。
  4. 一旦ログアウトし、ログインし直す。
% cd
% mkdir .MacOSX
% cd .MacOSX
% vi environment.plist
    :

environment.plistの中身は以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>LANG</key>
        <string>ja_JP.eucJP</string>
</dict>
</plist>

もちろんこれはDeveloper Toolsに入っているplist editorを使って編集しても構いません。

さて、「sh系のシェルより、csh系のシェルの方が好き(慣れている)」と言う人も多い(私も)と思いますので、次はtcshで日本語入力ができるようにする方法です。

tcsh

Mac OS X 10.3.*にインストールされているtcshは日本語入力に対応しています。しかし、10.2以前のtcshではmake時のコンフィギュレーションで、日本語を通すように設定されていなかったため、日本語入力できないようです。また、10.3のtcshでもUTF-8の扱いがいいかげんですし、大量の文字列を流し込むとハングするというバグもあります。ですから、tcshのソースを入手し、パッチをあて、設定さえきちんとして使ってみよう、というわけです。

さて、UTF-8改良パッチとハングアップ防止パッチをあてたtcshをソフトパーツのページから入手し、適当な場所に展開し、適当な場所にtcshをおいて下さい。

上記アーカイブにはpatchも同梱していますから、もちろんオリジナルのtcshを入手し、パッチをあてて、ソースからbuildしても構いません。

% wget http://www.yansite.jp/softparts/tcsh61300-yan2.tar.bz2
    :
% tar xvfj tcsh61300-yan2.tar.bz2
    :
% cd tcsh61300-yan2
% sudo cp tcsh /usr/local/bin/
% rehash
%

日本語(EUC)を通すようにするためには、次の2行が必要です。

% unset nokanji
% set dspmbyte=euc
%

UTF-8で使いたいときは、2行目はset dspmbyte=utf-8となります。

これらも、~/.tcshrcファイルに入れておけば良いでしょう。

% echo 'unset nokanji' >> ~/.tcshrc
% echo 'set dspmbyte=euc' >> ~/.tcshrc
%

あとは、システムデフォールトのログインシェルをbashからtcshに変更したければ、NetInfo Managerを使って、/users/(ユーザ名)/shellを/usr/local/bin/tcshに書き換えればよいだけです。

Mac OS X 10.4 (Tiger)の場合、付属の"ターミナル"が、/etc/shellsを見に行くようで、このファイルに"/usr/local/bin/tcsh"を書いておいて下さい。そうしないとターミナルがエラーで立ち上がりませんので。