- コマンドラインで日本語を - on Mac OS X カウンタ:Total(Today,Yesterday)

←vimとnvi-m17nのページへ

日本語lessのページへ→


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

bashとtcsh

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

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

bash

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

bashは元々、Mac OS Xにインストールされており、また、8bitスルーでもあるようですから、JTerminal起動時のshellとしてbashを指定してやれば、それだけで日本語の入力ができるようになります。つまり、JTerminalの環境設定 -> シェル -> プログラム名に /usr/local/bin/bash と書くだけです。また、システムデフォールトのログインシェルをtcshからbashに変更したければ、NetInfo Managerを使って、/users/(ユーザ名)/shellを/usr/local/bin/bashに書き換えればよいだけです。

ただ、bashのコマンドライン上で入力した日本語を削除しようとして、deleteキーを押しても、文字の半分しかカーソルが移動しません。要するに、2バイト文字を1文字として認識できず、1バイトずつしか削除できないようで、ちょっと不便です。また、「sh系のシェルより、csh系のシェルの方が好き(慣れている)」と言う人も多いと思いますので、次はtcshで日本語入力ができるようにする方法です。

その前にちょっと話は横道にそれますが...
現在のJTerminal(0.3.11)にはバグがあるようで、Windowを開いた直後はいいのですが、いくつかコマンドを実行したりして、カーソルがWindowの最下行にある状態で日本語を入力しようとすると、落ちます。で、ちょっとソースを見たところ、原因らしきところを見つけて対処しましたので、patchを置いておきます。次のようにpatchをあててから、(もちろん自己責任で)buildしてみて下さい。patchファイル(JT0311.pl)はJTerminalのソースがあるフォルダに置いて下さい。

% patch < JT0311.p1
%

tcsh

Mac OS Xにインストールされているtcshのバージョンは 6.10.00 のようで、これは本来、日本語入力に対応しているバージョンなのですが、make時のコンフィギュレーションで、日本語を通すように設定されていなかったため、日本語入力できないようです。ですから、tcshのソースを入手し、設定さえきちんとすれば、日本語入力できるtcshができあがるというわけです。

さて、Mac OS XのCVSなどからtcsh-6.10.00のソースを入手し、makeをしてもよいのですが、現在(2002年8月)の最新バージョンは、6.12.00 ですから、どうせならこのバージョンを使うことにします。以下のように、適当な場所にソースをダウンロードして展開して下さい。さらにconfigureも実行しておきます。

% ncftpget ftp://ftp.astron.com/pub/tcsh/tcsh-6.12.00.tar.gz
    :
% gnutar xvfz tcsh-6.12.00.tar.gz
    :
% cd tcsh-6.12.00
% ./configure
    :
%

次に、config_f.hファイルを編集します。編集するのは2カ所で、

#undef KANJI
    :
#undef DSPMBYTE

と、なっているところを、

#define KANJI
    :
#define DSPMBYTE

に、変更して下さい。あとは、makeしてインストールするだけです。

% make
    :
% sudo make install
    :
% sudo make install.man
    :
%

tcsh本体は/usr/local/binにインストールされます(オリジナルのtcshは/binに残っています)ので、/usr/local/binにpathを(/binより前に)通しておいたほうが便利です。また、manページも/usr/local/manにインストールされますから、環境変数MANPAGEも設定した方が良いでしょう。

% echo 'set path = ( /usr/local/bin $path )' >> ~/.tcshrc
% echo 'setenv MANPATH /usr/local/man:${MANPATH}' >> ~/.tcshrc
%

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

% unset nokanji
% set dspmbyte=euc
%

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

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

あとは、bash の時と同様に、JTerminalやNetInfo Managerで、shellとして/usr/local/bin/tcshを設定しておけば終りです。ここでインストールしたtcshでは(bashのように)deleteキーで1バイトしか戻らないようなことはありませんので、違和感なく使えると思います。