(66) シェルのプロンプトを変更する

投稿者: | 2017年10月6日

この記事は最終更新から 419日 が経過しています。

(1) やりたいこと

TeraTermや Putty等の CUIアプリで Linuxマシンにログインすると、行頭に以下のようなコマンドプロンプトが表示される。

[user@localhost ~]$

コマンドプロンプトとは、CUI上でコマンド入力を促すための印のようなもの。

自分が使用している CentOSの場合は、
[ユーザー名@ホスト名 ディレクトリ名]$
と表示される。

これを自由にカスタマイズしたい。

(2) 実現手段

コマンドプロンプトの書式は、環境変数 PS1 で定義される。
よってこの PS1 を好きなように書き換えてやればよい。

まずは現在の設定値を見てみる。

[user@localhost ~]$ echo $PS1
[\u@\h \W]\$
[user@localhost ~]$

以下のエスケープ文字が使われている。
\u : ログインしたユーザー名
\h : ホスト名
\w : カレントディレクトリのフルパス名
\W : カレントディレクトリの名前
\$ : $文字を表示 (UID=0 すなわち rootなら #文字を表示)

例えば、ログインユーザー名が user で
[user@linux]$
と表示させたければ、PS1を以下のように変更すればよい。

[user@localhost ~]$ PS1="[\u@linux]\$ "
[user@linux]$

(3) 恒常的に適用したい場合

シェルを起動するたびに PS1を設定させるようにすればよい。
すなわち .bashrc に書けばよい。

[user@localhost ~]$ vi ~/.bashrc

以下の一文を追加する。

PS1="[\u@linux]\$ "

これで次回シェル起動時からずっと適用される。
もしすぐに反映させたいならば source コマンドを実行する。

[user@localhost ~]$ source ~/.bashrc

(4) その他のエスケープ文字

個人的にはコマンドプロンプトが長くなるのが嫌で変更しているのだが、
もしこれに意味を持たせたい場面ではいろいろと自由にカスタマイズできる。

以下、一部を備忘録として記しておく。
\u : ログインしたユーザー名
\h : ホスト名
\W : カレントディレクトリの名前
\$ : $文字を表示 (UID=0 すなわち rootなら #文字を表示)
\d : 日付
\t : 時刻
\! : コマンドのヒストリー番号

その他、「エスケープシーケンス PS1」でググるとたくさん出てきます。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です