これは、stackoverflowからの私の投稿のコピーです。私はここでそれを尋ねるべきだったと思います...
ホスト名を変更するスクリプトを実行して、適切なホスト名ですぐにbashプロンプト(PS1変数)を更新したいと思います。これを実現するにはどうすればよいですか?
私はこれを実行します
#!/bin/bash
# Usage: ./changehost <newhostname>
#Do two sed's to edit the files for persistent hostname change
sed -i s/$(hostname)/$1/g "/etc/hosts"
sed -i s/$(hostname)/$1/g "/etc/sysconfig/network"
#run the hostname command with new hostname to update it
hostname $1
そのような端末でこれを入手する
[user@host dir]# ./changehost newhostname
[user@host dir]#
しかし、私が欲しいのはこれです
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
新しいシェルを開いたときにのみ、ターミナルは適切に更新されます。
私もやってみました
export PS1='somestring'; export PS1='[\u@\h \W]\$'
ターミナルのスクリプトの外で 'somestring'に切り替えて戻りますが、ホスト名は変更されません。:\
\ hがプロセスの開始時にメモリに格納され、起動後に変更できない可能性はありますか?
$PS1を私たちと共有するつもりでしたか?
export PS1='somestring'; export PS1='[\u@\h \W]\$'、ターミナルのスクリプトの外で実行しようとしましたが、 'somestring'に切り替わりますが、ホスト名は変更されません。:\プロセスの開始時に\ hがメモリに保存され、起動後に変更できない可能性はありますか?