サーバーで標準のbashシェルを操作する場合、PS1プロンプトはデフォルトで非ルートユーザーの場合は$で終わり、ルートの場合は#で終わります。
IE:
ubuntu@server:~$ Sudo su
root@server:/home/ubuntu#
どうしてこれなの?
従来、元の/ bin/sh Bourne Shellは、通常のプロンプトとして$
を使用し、ルートユーザープロンプトに対して#
を使用していました(cshは%
を使用していました)。これにより、スーパーユーザーとして実行しているかどうかが非常に簡単にわかります。
#
もコメント文字であるため、盲目的にデータを再入力しても、実際のコマンドは実行されません。
より最近のシェル(ksh、bashなど)では、$
と#
の区別を続けていますが、ユーザー名、ホスト名、ディレクトリなどのより複雑な値を設定できる場合はそれほど重要ではありません:-)
伝統。
POSIX標準によると (私の強調):
PS1
この変数は、対話型プロンプトに使用されます。歴史的に、「スーパーユーザー」のプロンプトは「#」でした。特権はモノリシックである必要はないため、どの特権が代替プロンプトを引き起こすかを定義することは困難です。 ただし、十分にパワフルなユーザーは、別のプロンプトを表示することでその能力を思い出す必要があります。
SuperUserフォーラムのほぼ同じ質問については this answer も参照してください。