現在の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印刷されるすべてのプロンプトの前に実行されますが、それで何ですか?コンピュータがひざまずいていません。

おすすめ記事