linux プロンプトメモ

プロンプトが異常に長く見にくいので修正。

対象環境:

Mac bash
linux baxh
echo $SHELL で確認。
※cat /etc/shells で使用可能シェルを表示

基本情報
\a     ASCII のベル文字 (07)
\d     "曜日 月 日"のフォーマットによる日付け
       (例 "Tue May 26")
\e     ASCII のエスケープ文字 (033)
\h     最初の"."のところまでのホスト名
\H     ホスト名
\n     改行
\r     復帰
\s     シェル名、$0 のベース名
       (最後のスラッシュの後ろの部分)
\t     24時間制の HH:MM:SS のフォーマットによる時間
\T     12時間制の HH:MM:SS のフォーマットによる時間
\@     am/pm をつけた12時間制のフォーマットによる時間
\u     現ユーザーのユーザー名
\v     bash のバージョン(例 2.00)
\V     bash のリリース番号、バージョンとパッチレベル
       (例 2.00.0)
\w     現在のディレクトリ
\W     現在のディレクトリのベース名
\!     現在のコマンドのヒストリー番号
\#     現在のコマンドのコマンド番号
\$     UIDが0なら#、そうでなければ$
\nnn   8進数nnnに対応する文字
\\     バックスラッシュ
\[     表示されない文字列の開始。端末制御シーケンスを
       プロンプトに埋め込む。
\]     表示されない文字列の終り。
Mac
\h:\W \u\$
tya_ko_suke-no-Macbook:etc user$
linux
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[[01;34m\]\w\[\033[00m\]\$
root@bt:/usr/local/src#

Mac は凄く単純でホスト名に現在のカレントディレクトリ(ディレクトリベース名)にユーザ名。
問題はlinuxでディレクトリを掘っていったり名前の長いディレクトリがあるとき。
/usr/local/srcのようなディレクトリ名が短い場合は大丈夫だとして、2011_0719_RT3070_RT3770_RT...のような長いディレクトリ名があるとディレクトリ名だけで1行埋まってしまって見にくいことこの上ない。
Macの設定に変えてしまうのも手だけれども折角なので解析してみる。

\[\e]0;\u@\h: \w\a\]

最初は端末制御シーケンスをプロンプトに埋め込んでるらしい。
これはX WindowのTerminalのタイトルバーを動的に変更する為の設定らしい
プロンプトの魔術
"\e]2;タイトルバーに表示したい項目\a"でできる。

${debian_chroot:+($debian_chroot)}\

謎の識別子「debian_chroot」調べるとどうやらUbuntuOS特有の機能らしい。
これを記載することでchroot環境になっていることを明示的にプロンプトで示してくれるらしい。
そのうちchrootも試してみよう。
UbuntuなノートPC上にDebian sidのchroot環境を作る
javaサンドボックスみたいな感じがしたけど違うかな?

\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[[01;34m\]\w\[\033[00m\]\$

一気に最後まで。
と言うのもこれ長いように見えるけど色をつけているだけ。
でも気になったのが何故ここにきて\eを\033に置き換えたのか?
この二つは同じ意味なのにわざわざ長い方にしたのは何故?
カラーの設定だと分かりやすくするためなのかな??
”\[\033[カラー設定値m”で設定できる。

\[\033[01;31m\]\u@\h

プロンプトの魔術のカラー設定を参照するとユーザ名とホスト名に対して明るい赤を設定していることがわかる。
ちなみにカラー設定は文字色(フォアグラウンドカラー)、背景色(バックグラウンドカラー)で構成されていて背景色が40(黒)の場合は設定値を省略するのがお作法らしい。

\[\033[00m\]:

lsで表示されるファイルのカラー表示についてを参考にするとコロンを標準色に戻していることが分かる。

\[\033[[01;34m\]\w

ここでは現在のディレクトリパス名を青に設定している。
ちなみに、何回か登場している01は太字設定を意味する。
lsで表示されるファイルのカラー表示について

\[\033[00m\]\$

最後のダラーを標準色に戻している。

と言うわけで無事解析終了。
linuxのディレクトリ名が長すぎるのが問題だったのでディレクトリ表示をなくすように修正。
.bashrcを直接編集source .bashrcで適用で完了。