bash custom prompt $PS1

今頃知ったけど、bash のプロンプト文字列は変更できるようだ。
Fedora と Ubuntu で表示が違うのは単に変数の内容が違うだけだった。

How to: Change / Setup bash custom prompt (PS1)

早速 $PS1 の値を確認してみよう。

ubuntu_bash

$ echo $PS1

# Fedora Output
"[\u@\h \W]\$ "
# Ubuntu Output
"\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ "

Ubuntu はナンジャコリャだけど、\[\] で囲んだ内容は非表示属性のようだが。
echo $debian_chroot
は何も定義されていないみたいだし、Ubuntu では su は使えないし。
\u@\h:\w\$ だけでいいような?

ということで。
PS1 変数に指定子や記号を代入すればその値で表示されるようだ。
あの長ったらしくて困る Ubuntu のプロンプトを変更したかったので嬉しい。

\w を \W に変更するだけでいいようだが私的理由で Fedora と同じにする。
端末内で行ってもそのプロセス以外では反映されないので ~/.bashrc に指定。

bashrc

これで深い階層で端末を利用してもイラッとしなくなる。
現在位置の確認は pwd コマンドで充分、Fedora でそうしている。
もっと短くしたいなら \h のホスト名を消すという技もあるね。

本当は Windows の cmd.exe でこうしたいんだけど…

A better PROMPT for CMD.EXE or Cool Prompt Environment Variables and a nice transparent multi-prompt – Scott Hanselman

ロクなことできないなぁやっぱり。
そもそもホームをチルダ表示にできないから無意味だが。
PowerShell はチルダで cd 異動が可能なのに何故チルダにしなかったのか?

コマンドラインを強化せよ! – Windows 7のコマンドプロンプトをカスタマイズする (5) エイリアス機能でコマンドプロンプトを使いやすくする | マイナビニュース

コマンドはコレで似せることができるけど面倒臭いにもほどがある。
やっぱり Windows は糞だよ、Linux 慣れしすぎともいうが。