Macターミナルのプロンプトの色を変更

※2013/02/12追記
(要調査)下記設定を行った場合、ターミナルの横幅を超える文字列を入力すると表示がおかしくなるようです

コメントで頂きました。ありがとうございます!
制御文字列を \[ \] で囲むといけるようです。


Macのターミナルが
f:id:BTT:20130209230547p:plain
こんな感じや
f:id:BTT:20130209230558p:plain
こんな感じで、プロンプトとコマンドが同じ色で、若干見づらいので変更。

ターミナルで古いものを遡る時も、色付いてた方が見やすいしね。

初期状態

初期状態では以下が設定されているので、これをベースに色を付ける。

$ echo $PS1
PS1='\h:\W \u\$ '

※\h や \W 等の意味は下記URL参照
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html

以下の表を参考に色を決定。

Regular Bold Underline Background
Black \e[0;30m \e[1;30m \e[4;30m \e[40m
Red \e[0;31m \e[1;31m \e[4;31m \e[41m
Green \e[0;32m \e[1;32m \e[4;32m \e[42m
Yellow \e[0;33m \e[1;33m \e[4;33m \e[43m
Blue \e[0;34m \e[1;34m \e[4;34m \e[44m
Purple \e[0;35m \e[1;35m \e[4;35m \e[45m
Cyan \e[0;36m \e[1;36m \e[4;36m \e[46m
White \e[0;37m \e[1;37m \e[4;37m \e[47m

Reset \e[0m

例)

  • Red --> \e[0;30m
  • Green Bold --> \e[1;32m

試しに

まずはターミナル上で色々試してみる。
環境変数PS1に対し、上記の色の設定を入れれば、それ以降が指定の色になるのだけれど、コマンドも同じ色になってしまう為、最後にリセットのコードを入れてやる。

例1
$ PS1='\e[0;31m\h:\W \u\$ \e[0m'

f:id:BTT:20130209233900p:plain

例2
$ PS1='\e[1;34m\h:\W \e[1;32m\u\$ \e[0m'

f:id:BTT:20130209234207p:plain

例3
$ PS1='\e[46m\h:\W \u\$\e[0m '

f:id:BTT:20130209234804p:plain

設定

色が決まれば、単純に『~/.bash_profile』に設定を追記すればOK。

...のはずなんだけど、Macのターミナルは初期で背景色が違うプロファイルが複数あり、どのプロファイルでターミナルを立ち上げても、同じPS1になり、かえって見づらくなってしまう。

そこでプロファイル毎の設定を行う。

『ターミナル > 環境設定 > 設定するプロファイル > シェル』 の『起動』に以下を設定。

  • 『コマンドを実行』にチェックを入れ、『PS1='(実際に設定する値)'; clear』を入力
  • 『シェル内で実行』にチェックを入れる

※ターミナルを立ち上げる度、コマンド履歴にPS1の設定が残ってしまうのが難点。