MacOS SnowLeopard でターミナルを使っていますが、バックスラッシュ’\’ (日本語キーボードでは¥マーク)を入力する必要が発生し、特に何も考えずに \ をタイプ入力して先に進んだのですが、なぜかコマンドがエラーになってしまいました。もう一度繰り返してもエラーになるので、コマンドラインをよくよく見てみたら、\ が入力されず、次の文字が直接入ってしまっています。ここで初めてバックスラッシュが入力できていないことに気付きました。Shift + \ のパイプ | は入力出来るのでキーボードの故障ではないみたいです。また、別のアプリケーションでは \ が入力出来るので、Terminal アプリ固有の現象だとわかりました。ちなみに私はUS配置のキーボードを使っています。
はは〜ん。なんか変なバイナリファイルを開いてしまってエスケープが変わってしまったかな。とターミナルを一度終了させて再起動しても駄目。
エクスポゼが横取りしているんじゃないか?と疑うも、別アプリでは入力出来る訳だし。
以前シェルスクリプトを書いた時は問題なく入力出来ていたはず。と思い出そうとするも、バックスラッシュってプログラミングに必須ではあるけど、毎度毎度使うキーでもない。Macでプログラムを動かしている訳じゃなくて、Unixで動かすプログラムを入力していただけだから、本当にMacのターミナルアプリからプログラム入力を行っていたかどうか思い出せません。
iBookでTerminalアプリを起動して試してみると \ を入力出来るが、iBookはLeopardなので、TerminalのせいなのかOSのバージョンに依存しているのか確信を持てません。
ターミナルの環境設定をチェックして見たけど、キーボード関係のところに ‘\’ だけ変更出来るような設定は無し。
キーボードと直接は関係ないものの、文字エンコーディングの設定が「日本語 Mac OS」となっていることを発見。試しに、設定を UTF-8 に替えてみたところ、\ が出ました。何かのテキストファイルを開く時に、エンコード違いで文字化けしたのを戻す時にここの設定を変更したんだろうね。
で、元の設定に戻す時にUTF-8 よりもMac OS エンコードを選んだって事。ターミナルソフトで \ を入力出来ないって変だと思ったんだけど、原因に気付きませんでした。
ということで、今回の症状をここにメモ、メモ。