CentOSなどのプロンプトを変更するにはPS1という環境変数を変更します。 いたずらに変更しても仕方がないですが、運用上オペミスを防ぐためにホスト名を表示したり、コマンドの実行時間を確認するために時刻などを表示しておくのも便利です。
デフォルトでは、以下のように、ユーザ名@ホスト名とカレントディレクトリ名、そしてrootユーザの場合は"#"、それ以外のユーザの場合は"$"がプロンプトとして表示されます。 これを設定しているデフォルトのPS1は以下のように確認できます。設定を変更する前に確認しておきましょう。
[<username>@<hostname> <dirname>]$ echo $PS1
[\u@\h \W]\$
プロンプトを変更する環境変数SP1には以下のようなものが使えます。
エスケープシーケンスに利用可能な記号の一部を紹介します。 あまり使いどころのない記号は省略してあります。
記号 | 意味 |
---|---|
\u | ユーザ名 |
\h | ホスト名 |
\W | カレントディレクトリ |
\W | カレントディレクトリのフルパス |
\t | 24H形式で時刻 HH:MM:SS |
\T | 12H形式で時刻 HH:MM:SS |
# | ログイン以降のコマンド番号 |
! | コマンドヒストリーの番号 |
\$ | rootユーザの場合は"#"、それ以外のユーザの場合は"$" |
これらのエスケープシーケンスを使用するには以下のように環境変数PS1を上書きします。
$ export PS1="[\u@\h \W]\$ "
[<username>@<hostname> <dirname>]$
たとえば、\t、#、\Wを用いて、時刻、コマンドの実行番号、カレントディレクトリ名表示、しておくと何か操作記録を見るのに便利かもしれません。
$ export PS1="[\t \# \W]\$ "
[14:51:29 2 ~]$ mkdir test
[14:51:35 3 ~]$ cd test
[14:51:37 4 test]$ touch test
[14:51:42 5 test]$ ls
test
シェル変数を埋め込むことも簡単にできます。
$ export PS1="$PWD \$ "
/tmp $
もうひとつ。
/tmp $ export PS1="$LANG \$ "
ja_JP.UTF-8 $
最後にコマンドを埋め込みます。 コマンドを埋め込むときは\$(コマンド名)で埋め込みます。
export PS1="\$(date +%Y%m%d%H%M%S) \$"
20131208 $
もうひとつ、カレントディレクトリを表示してみます。
$ export PS1="\$(date +%Y%m%d%H%M%S) \$(pwd) \$ "
20131213163159 /tmp $
究極的に省スペースにするなら
$ export PS1=""
(何も表示されない)
cd /
ls
bin boot dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var
これでは何もなさ過ぎて逆に分かりにくいので、プロンプトに$か#だけでも表示するには以下のようにします。
$ export PS1="\$ "
$
特に簡単にコマンドなどが組み込めることから、
など、用途に応じて表示項目を加えるといいと思います。