Mac OS X
ターミナルでの日本語の扱いについて

2005/05/09 Update


◆ はじめに

Mac OS X v10.2(以降)のターミナルは、UTF-8に対応し、多言語の表示が可能となった。

UTF-8

-vオプション付きでlsコマンドを実行するとUTF-8で記録された日本語名のファイルやフォルダも正しく表示される。

ls -v

しかし、デフォルトの状態ではコマンドラインへの日本語の直接入力に対応していないため使いにくい。

本ページは、Mac OS Xのターミナルで日本語を扱う際の設定等をまとめたものである。
OSのバージョン固有の設定は[10.4]のように表記している。
特に指定の無いものはバージョン共通の設定である。

なお、Mac OS X v10.2ではデフォルトのシェルがtcshであったが、Mac OS X v10.3以降ではbashに変更されている。
(ただし、v10.2からアップグレードした場合は、そのままtcshが使用される)
◆ 日本語文字をエスケープして使用する場合

【設定例】
[10.3][10.4]
・ターミナルインスペクタ(「ファイル」-「情報を見る」またはcommand+I)の「エミュレーション」で「非ASCII文字をエスケープする」のチェックボックスをオンにする(デフォルト)。
画像

[10.2]
・ターミナルインスペクタの「エミュレーション」で「ctrl+Vキーで8ビット文字をエスケープする」のチェックボックスをオンにする。

【使用例】
コマンドラインに日本語を入力すると、確定時点でエスケープされた文字列に変換される。

tcsh
コマンドラインへ日本語入力

tcsh
エスケープされた文字列に変換される

また、ターミナルウィンドウにパスに日本語名を含むファイル/フォルダをドラッグ&ドロップすると、コマンドラインにパスがエスケープされた文字列で入力されるので、既存のファイル/フォルダに対する操作ではこれを利用することもできる。

tcsh
「cd 」までタイプし、ターミナルウィンドウに移動先のフォルダをドラッグ&ドロップ

tcsh
ドラッグ&ドロップしたフォルダのパスがエスケープされた文字列で入力される

◆ 日本語文字をエスケープせずに入力する場合

1. bashの場合
[10.3][10.4]
・デフォルトのログインシェルがbashなので、シェルを変更する必要はない。
・ターミナルインスペクタの「エミュレーション」で「非ASCII文字をエスケープする」のチェックボックスはオフにしておく。

[10.2]
・デフォルトのログインシェルはtcshなので、コマンドラインから「bash」とタイプしてbashに切り替える(tcshに戻る場合は「exit」)か、Netinfoマネージャでログインシェルを変更してログインし直す。
・ターミナルインスペクタの「エミュレーション」で「ctrl+Vキーで8ビット文字をエスケープする」のチェックボックスはオフにしておく(デフォルト)。

【設定例】
(1) ホームディレクトリに「.inputrc」という名称のテキストファイルを作成し、以下の内容を記述する。

set convert-meta off
set meta-flag on
set output-meta on

(2) 指定を有効にするために一旦ターミナルを終了するか、新たにターミナルウィンドウを開く。

(3) コマンドラインへ日本語を入力することができる。
日本語名を含むファイル/フォルダをターミナルウィンドウにドラッグ&ドロップした場合も、パスが正しく日本語で入力される。

bash

2. tschの場合
[10.3][10.4]
・tcshの再コンパイルの必要は無い。
・デフォルトのログインシェルはbashなので、コマンドラインから「tcsh」とタイプしてtcshに切り替える(bashに戻る場合は「exit」)か、Netinfoマネージャでログインシェルを変更してログインし直す。
・ターミナルインスペクタの「エミュレーション」で「非ASCII文字をエスケープする」のチェックボックスはオフにしておく。

[10.2]
・標準でインストールされているtcshは日本語が使用できない設定でコンパイルされているので、次の手順に従い再コンパイルを行う。
(美濃氏よりお教え頂いた)

【コンパイル手順】
(開発環境のインストールが必要)
(1) TCSH:HOMEからソースコードをダウンロードし、適当な場所に展開する。

% tar xvzf tcsh-6.12.00.tar.gz
% cd tcsh-6.12.00

(2) 漢字を使用できるようにするため、config_f.hを編集し、KANJIとDSPMBYTEの定義を有効にする。

#undef KANJI → #define KANJI

#undef DSPMBYTE → #define DSPMBYTE

(3) configureしてmakeを行い、root権限でインストールする。

% ./configure
% make
% sudo make install

(4) /usr/local/binにインストールされるので、Netinfoマネージャでログインシェルを変更してログインし直す。

・ターミナルインスペクタの「エミュレーション」で「ctrl+Vキーで8ビット文字をエスケープする」のチェックボックスはオフにしておく(デフォルト)。

【設定例】
(1) シェル変数を設定する。「.cshrc」ファイルに以下の記述を追加。

set dspmbyte=utf8

(2) 新規にターミナルウィンドウを開くか、以下のコマンドを実行して設定を有効にする。

% source ~/.cshrc

(3) コマンドラインへの日本語入力が可能となる。

tcsh UTF8

ログインシェルの変更方法

(1)「アプリケーション」-「ユーティリティ」フォルダ内の「Netinfoマネージャ」を起動する。

(2) ウィンドウ左下のカギのアイコンをクリックし、管理者パスワードを入力する。

(3) ウィンドウ上部のカラムで「/users/(ユーザ名)」を選択する。

(4) ウィンドウ下部の「shell」プロパティの値の部分をクリックして内容を変更する。

bashに変更する場合は「/bin/bash」に、上記の例でコンパイルしたtcshに変更する場合は「/usr/local/bin/tcsh」に変更すればよい。

(5) Netinfoマネージャを終了する。

(6) 一旦ログアウトして再ログインする。

:ログインシェルを「/usr/local/bin/tcsh」に変更したユーザーがftpサービスにログインできない場合は /etc/shells の記述に /usr/loca/bin/tcsh を追加する。

◆ 日本語の文書の読み書き

ターミナルインスペクタの「ディスプレイ」では文字セットエンコーディングを指定することができ、UTF-8以外に「ISO 2022-JP」、「Shift JIS」、「EUC」等を選択することができる(画像)。
文字セットエンコーディングの変更は即座に反映される。

1. emacsの場合(日本語EUC)

(1) ホームディレクトリに「.emacs」という名称のテキストファイルを作成し、以下の内容を記述。

(set-default-coding-systems 'euc-jp)
(set-keyboard-coding-system 'euc-jp)
(set-terminal-coding-system 'euc-jp)
(set-buffer-file-coding-system 'euc-jp)

(2) ターミナルを起動し、文字セットエンコーディングで「日本語(EUC)」を選択する。

(3) emacsを起動。

・bashの場合([10.3][10.4])
$ emacs

・tcshの場合([10.2])
rawモードでemacsを起動。

% stty raw;emacs;stty -raw

emacs
emacsで日本語入力

2. vimの場合(UTF-8)

[10.4]
・標準でインストールされているvim(viはvimのシンボリックリンク)が、multibyte有効でコンパイルされているため、vimの再コンパイルは必要ない。

[10.3]
・標準でvimがインストールされている(viはvimのシンボリックリンク)が、multibyte無効でコンパイルされているので、multibyte有効で再コンパイルしたほうが良い。

[10.2]
・viは日本語に対応していないので、次の手順でvimをインストールする。

【コンパイル手順】
(開発環境のインストールが必要)
(1) vimのWebサイトからソースコードをダウンロードし、適当な場所に展開する。

$ tar jxvf vim-6.2.tar.bz2
$ cd vim62

(2) multibyteを有効にしてコンパイルおよびインストールを行う。

$ ./configure --enable-multibyte --enable-xim --enable-fontset --with-features=big
$ make
$ sudo make install

(3) /usr/local/bin/vimにインストールされるので、/usr/local/bin にパスを通す。

【設定例】
(1) ホームディレクトリに「.vimrc」という名称のテキストファイルを作成し、以下の内容を記述。

set enc=utf-8
set fenc=utf-8
set fencs=iso-2022-jp,sjis,euc-jp,utf-8

(2) ターミナルを起動し、文字セットエンコーディングで「UTF-8」を選択する(デフォルト)。

vim
vimで日本語入力

注1:emacおよびvim自体の詳細についてはそれぞれのドキュメント等を参照のこと。
注2:日本語の表示がずれる場合、ターミナルインスペクタの「ディスプレイ」で「ワイドグリフは2桁とカウントする」のチェックをオンにすると改善される場合がある。ただし、このチェックをオンにすると環境によってはターミナルの動作が不安定になるようだ。

◆ その他

日本語環境に対応したUnixコマンドの多くは日本語EUCでメッセージを出力するので、文字セットエンコーディングで「日本語(EUC)」を選択すればメッセージやヘルプを日本語で表示することができる。

wget
wgetのヘルプ

また、Java環境のデフォルトエンコードは「SJIS」なので、ターミナルの文字セットエンコーディングで「日本語(Shift JIS)」を選択すればjavacのメッセージやSystem.out.printlnメソッドの出力等も正しく表示できる。

jabac
javacの日本語メッセージ

◆ 最後に

Mac OS Xではファイル名はUTF-8、Unixに由来する部分では日本語EUC、従来のMac OSに由来する部分ではShift-JISと、複数の文字コードが混在して使用されている。

これらの文字コードを自動認識し文字セットエンコーディングを完全に切り替えることは困難であるため、やや面倒ではあるが手動で切り替えながら使用するのが現実的だろう。

←TOPページに戻る

「Macintoshは米国アップルコンピュータ社の商標です」
「その他、記載の商品名などは、一般に各社の登録商標または商標です」

Copyright (C) Toshimitsu Tanaka 2002-2005.