現在のbashセッションでbashプロンプト文字列をどのように変更しますか?

現在のbashセッションでbashプロンプト文字列をどのように変更しますか?

次のbashプロンプト文字列があります。

root@LAB-VM-host:~# echo "$PS1"
${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 
root@LAB-VM-host:~# hostname 
LAB-VM-host
root@LAB-VM-host:~# 

ホスト名を with コマンドLAB-VM-hostに変更しても、この bash セッションのプロンプト文字列は変更されません。VM-hosthostname

root@LAB-VM-host:~# hostname VM-host
root@LAB-VM-host:~# 

現在のbashセッションのbashプロンプト文字列のホスト名部分を更新する方法はありますか、それとも新しいbashセッションにのみ適用されますか?

答え1

PS1もう一度エクスポートすると、他の答えからわかるように、Debianは実際に変更されたホスト名を選択しますか?その場合は、次のように更新できます。

export PS1="$PS1"

Debianについてはわかりませんが、OS X Mountain Lionではこれが可能です。いいえどのような影響がありますか?他の答えで提案された明示的なバージョンも同様です(上記とまったく同じです)。

これが機能していても、実行中の各シェルでプロンプトを個別にリセットする必要があります。この場合、新しいホスト名で手動で設定してみてはいかがでしょうか?または、新しいシェルを起動します(を使用してサブシェルとして使用するか、bash実行中のプロセスをに置き換えますexec bash)。ホスト名が更新されます。

実行中のすべてのシェルでホスト名の変更を自動的に追跡します。、以下でプロンプトを設定します.bashrc

export PS1='\u@$(hostname):\w\$ '

またはあなたの場合:

export PS1='${debian_chroot:+($debian_chroot)}\u@$(hostname):\w\$ '

つまり、\hプロンプトをに置き換えて$(hostname)一重引用符で囲む必要があります。これはhostname印刷されるすべてのプロンプトの前に実行されますが、それで何ですか?コンピュータがひざまずいていません。

答え2

dr01によると、以下を使用する必要があります。

export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$' 

しかし、上記の行は一時的であるため、永久に使用するには、.bashrcまたは.profile

答え3

ホスト名はプロンプトで自動的に更新されません。$PS1変数を再エクスポートする必要があります。

export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$' 

この変数は、.bashrc出力の行#1と#2に示すように、ユーザーまたは他のBASH構成ファイルにすでに設定されています。ただし、ホスト名が変更された後に新しいプロンプトを更新するには、上記のコマンドを使用して変数を再エクスポートする必要があります。

関連情報