はじめに
コマンドプロンプト(ターミナルエミュレータ)の表記で、$
が使われてるのをよく見ます。
$ touch sample.txt
実は、以下のような表記(#
/ %
)も使用されるようです。
# touch sample.txt
% touch sample.txt
この記号の違いはなんでしょうか?
そもそも、コマンドプロンプトとは?
ChatGPTによると、「OSがユーザーの入力を待っている状態」を指すようです。
なるほど、確かにそうかも。「状態」というより「ツール」「ソフトウェア」というイメージも強いですが。
コマンドプロンプトの「プロンプト」とは、コンピュータのオペレーティングシステムがユーザーの入力を待っている状態を指します。具体的には、テキストベースのインターフェイスで、ユーザーがコマンド(命令)を入力する場所のことを言います。プロンプトは通常、コマンドラインインターフェイス(CLI)における入力行の先頭に表示される文字や記号のことで、ユーザーが次に何か操作を行うことができる「準備ができている」というシグナルを表しています。
たとえば、Windowsのコマンドプロンプトでは、
C:\Users\YourName>
のように現在のディレクトリのパスが表示され、ここにコマンドを入力することで、ファイル操作やシステム設定の変更など様々な操作を行うことができます。この表示がプロンプトであり、コンピュータがユーザーの入力を促している状態を示しています。
英語の原義としてはどうでしょうか。
ChatGPTとMac備え付け辞書で確認してみましょう。
両者ともに「入力を促す・待つ」という点で同じですね。
ChatGPT
プロンプト(prompt)という英語の原義は、「迅速な」や「即座の」を意味し、さらに「促す」や「刺激する」という行動を促す意味合いも持ちます。この言葉は、人が行動を起こすように促したり、何かをするための即刻の刺激や動機づけを提供することを表します。コンピュータのコンテキストで使用される場合、ユーザーにアクションを促すためのシグナルやメッセージという意味で使われています。つまり、コマンドプロンプトでの「プロンプト」は、ユーザーにコマンドの入力を促す、そのための待機状態を示しているという意味で使用されています。
本題:$
/ #
/ %
の違い
これらの違いは、
- ユーザー権限の違い
- コマンドシェルの違い
を表しています。
$
vs #
これはユーザー権限の違いです。
$
は非特権ユーザー(標準ユーザー)のプロンプトを示します。
#
は特権ユーザー(スーパーユーザー・root)のプロンプトを示します。
例えば、docker compose exec web bash
と実行すると、コマンドプロンプトに#
と表示されます。
これはスーパーユーザー権限で実行することを示しているようです(ChatGPTによると)。
$
vs %
コマンドシェルの違いです。
一般的には$
を使用しますが、一部コマンドシェル(現在macで使用されているzsh
など)では%
を使用します。
#
の注意
#
は、「コメントアウト」も表します。
ユーザーが#
を使うと「コメントアウト」
コマンドプロンプトが表示した場合「スーパーユーザー」です。
おわりに
$
に特に意味はないと思ってましたが、ちゃんと意味があったんですね。
身近なものにも知らないことが溢れていて楽しいです。
さて、次は何を書こうかしら・・・