UNIX/Linuxのシェルの基本は文字ベースのCUI/character User Interfaceであり、ログイン後シェルの種類により異なるシェルプロンプトが表示された状態になります。
Bourne shell/shやbash、kshの既定のプロンプトは
$
csh/tcsh/zshの既定のプロンプトは
%
Bourne shell/shやbashのroot(UNIX/Linux管理者)のプロンプトは
#
です。
ちなみにBourne shell系のsh/bash/kshの場合、一般ユーザー用プロンプトは環境変数[PS1]に格納されており、必要であれば変更することも可能です。
更にちなみに[PS2]~[PS4]もあります。
環境変数[PS2]は、複数行入力する場合における2行めから表示されるプロンプト用で、コマンドライン上でcatとヒアドキュメントを利用した場合や1行に収まりきらないワンライナーを複数行に渡って記述したい場合などに行末尾に[\]を付加した場合などのプロンプトです。
$ find . -name "a*" | grep \
> ...
↑ 環境変数[PS2]で設定されるプロンプト
環境変数[PS3]は、制御構造のselect文で使う選択用プロンプトです。
$ ./example.sh
番号を選択してください :
1) ...
2) ...
3) ...
...
↑ 環境変数[PS3]で設定されるプロンプト
環境変数[PS4]はbashデバッグモードである[-x]オプション(コマンドラインでは[bash -x]、スクリプトでは[#!/bin/bash -x])、[set -x]と[set +x]で囲まれた範囲を部分的にデバッグする際のトレース実行結果の各行に表示されるプロンプトです。
$ bash -x debug_sample.sh
+ echo $i
+ if [...
++ ...
...
↑ 環境変数[PS4]で設定されるプロンプト
また、bashのプロンプト設定では、いくつかのプロンプト変数を利用することができ、homeやuser、日付などをプロンプトにセットすると変数が(userごとなど内容によって)展開されてプロンプトとして表示されます。
尚、bashで個別の環境変数を調べるには標準出力への出力コマンドechoを使って
$ echo $PS1
$ echo $PS2
$ echo $PS3
$ echo $PS4
のようにします。
ちなみにcsh/tcsh、ksh、zshでは下記のような環境変数がプロンプト用として使われています。
bash以外のプロンプト用環境変数 | ||
---|---|---|
csh/tcsh | ksh | zsh |
prompt | bash同様 | PROMPT |
prompt2 | PROMPT2 | |
prompt3 | PROMPT3 | |
- | PROMPT4 |