シェルプロンプトのちょっとしたこだわり
UNIX系の環境(cygwin含む)では、シェルは基本的にbashを使う主義だ。昔はインタラクティブな作業のためのログインシェルはcshかtcshを、シェルスクリプトではshと使い分けていたが、bashを使うようになってログインシェルはbashだ。
シェルプロンプトの使い勝手を考えると、ユーザー名、サーバ名、カレントディレクトリのフルパスが表示されて欲しい。カレントディレクトリはどこ?はもちろんのこと、複数のターミナルで複数のサーバにログインして作業していると、操作対象のサーバを間違えた!とかを未然に防ぎたいのだ。
ということで以下の設定を.bashrcに記載して使っている。\uがユーザー名、\hがマシン名、\wがカレントディレクトリのフルパスだ。また\nで改行される。
PS1='\n\u@\h:\w\n\$ '
プロンプトを改行して次の行にカーソルが出るようにしているので、カレントディレクトリのフルパスが長くなっても見やすい。
papiro@server1:/usr/local/share/vim/vim71/autoload/xml $ ls html32.vim html401t.vim html40t.vim xhtml10t.vim xsl.vim
また、ホームディレクトリ以下の場合は、カレントディレクトリまでが'~'で表示されるので簡潔になる。
papiro@server1:~/rails/project1 $ ls README config/ lib/ script/ vendor/ Rakefile db/ log/ test/ app/ doc/ public/ tmp/
マシン名を\HにしてやるとFQDNで表示される。
PS1='\n\u@\H:\w\n\$ '
こうすると、scpとかでコピーする時に、プロンプトのところをコピペすると少し簡単になるのかな?
papiro@server1.example.com:~/rails/project1 $ ls README config/ lib/ script/ vendor/ Rakefile db/ log/ test/ app/ doc/ public/ tmp/
シェルプロンプトをこうやったきっかけは、cygwinのbashプロンプトが以下のようになっていて、なかなか使いやすかったからだ。
PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
エスケープシーケンスを使うことで、ユーザー名@マシン名が緑、カレントディレクトリのフルパスが黄色に表示される。
papiro@pc1 /usr/share/vim/vim72 $ ls autoload/ evim.vim gvimrc_example.vim macros/ scripts.vim vimrc_example.vim