このエントリーをはてなブックマークに追加

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="\$ "
$

特に簡単にコマンドなどが組み込めることから、

  • 頻繁にユーザを切り替える人は最低\u(ユーザ名表示)
  • 頻繁にsshなどで別ホストにログインする人は、最低限\h(ホスト名)
  • デートの時間や仕事の終了時間が気になる人は、\t(時刻表示)

など、用途に応じて表示項目を加えるといいと思います。




記事一覧へ