Ubuntu VMの$ PS1が実際のプロンプトと一致しません。

Ubuntu VMの$ PS1が実際のプロンプトと一致しません。

Virtual BoxUbuntu VMを実行していますVagrant

vagrant@lucid64:~$ uname -a
Linux lucid64 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux

私の$ PS1変数は実際にはプロンプトと一致せず、はるかに複雑です。

vagrant@lucid64:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

私は上記のように$ PS1とプロンプトの間の関係の説明を探しています$USER@$HOST:$PWD\$

たとえば、この仮想マシンをホストし、Macである一般的なノートブックでは、次のようにきれいでシンプルです。

~@12:10:20>echo $PS1
\w@\t>

答え1

Ubuntuは$PS1基本的に3つの部分で構成されています。

  • \[\e]0;\u@\h: \w\a\]

    これは、端末のタイトルテキストをに設定するエスケープシーケンスです$USER@$HOST: $PWD

    \[\]印刷できない文字シーケンスの始まりと終わりを示します。

    \eASCII エスケープ文字です。

    ]0;特定のエスケープシーケンスです端末のアイコンとタイトルを設定xterm互換性のある端末から

    \u現在のユーザーのユーザー名に展開されます。

    @文字通り@です。

    \hホスト名に展開されます。

    :文字通りのコロン文字です。

    \w現在の作業ディレクトリに展開します。

    \aASCII ベル文字です。

  • ${debian_chroot:+($debian_chroot)}

    chroot環境にある場合は、括弧内のchroot名に展開されます。

    ${var:+OTHER}$OTHER設定されている場合は評価され、varそうでない場合は空の文字列として評価されます。ファイルの内容で初期化された変数$debian_chroot。したがって、chroot環境にこのファイルが含まれている場合、プロンプトには現在シェルが実行されているchrootを表すファイルの内容が含まれます。/etc/bash.bashrc/etc/debian_chroot

  • \u@\h:\w\$

    よく見られる実際のヒントです。

    \u、、、、、@上記の\hように。:\w

    \$有効なuidが0(つまり、ユーザーがroot)の場合は数値記号#に展開され、それ以外の場合はドル記号$に展開されます。

リソース

答え2

これを破るのはおそらく最も簡単でしょう!

最初の部分では:

\[\e]0;\u@\h: \w\a\]

最初の部分(bits \[\e]0;)には端末制御文字が含まれています(通常はbashプロンプトの色やウィンドウタイトルの更新などに使用されます。以下で詳しく説明します)。

2番目の部分()はプロンプト部分を\u@\h:提供し、現在の作業ディレクトリへのパスを表示します。これはuser@host\w\aASCII ベル文字

クイック検索基本的に、$ PS1の対応する部分は、bash端末ウィンドウのタイトルをプロンプトと同じ値に更新するように指示することがわかりました。このように。 (図のシェルはということを知っていますが、zsh同じ原則が適用されます。)デフォルトでは、最初の「フレーズ」全体が現在のウィンドウタイトルを更新します。


${debian_chroot:+($debian_chroot)}

上記の部分は、「変数が定義されている場合$debian_chroot(つまり空でない場合)、プロンプトに文字列を含めます」を意味します。私はこの変数が$debian_chrootシステムがルート化されたときにのみ値を持つと確信しています。詳細については、ここをクリックしてください。


\u@\h:\w\$

最後の部分では標準user@host: ~/$プロンプトを生成します。

ファタイ

編集:そうです、誰かが私を殴ったようです。

関連情報