2013年10月5日土曜日

emacs内のshellで、変な文字コードが表示される時

Linuxでのプログラム開発のとき、自分はほとんどemacsでプログラミング/ビルド/デバッグおよび実行をします。(マウスを使ってwindowを切り替えるのが面倒)かなり昔からこのスタイルで、はやりの統合開発環境はあまり好きではありません。(さすがにJavaプログラムをするときはeclipse使いますが)
何年か前からですが、emacs内でshellを起動してファイル操作、実行等しているときに"ls"コマンドで変な文字コードが出るようになりました。(行末、行頭に何かの制御コード?)


自分はtcshが好みなんですが、やむをえずbashを起動すると正常になっていました。最近はUbuntu使うことが増えたので、デフォルトのbashを使うことも多くなったのですが、ところが最近のLinuxだとそれでもダメなことが増えてきて、本格的に調べてみました。
原因は"ls"がshell起動時にaliasされて、"ls --color=auto"になっていたことでした。ここ数年前から"ls"コマンドすると、ファイルの種類やディレクトリの表示を種類別にカラー表示してくれるようになるのがデフォルトになっていましたが、emacs内のshellにはカラー表示の機能がないため、その制御コードが表示されていました。
aliasを削除してもいいんですが、普段のコンソールでは便利なのでemacs等のshellだけ無効にするため、.bashrcの最後に以下の様な$TERM環境変数をチェックするif文を追加しました。(TERMにはGUI環境では通常"xterm"等が入っています)


ファイルの種類によるカラー表示はだめになりましたが、昔ながらの"-F"オプションで種類は識別できます。


0 件のコメント:

コメントを投稿