Dies ist eine Kopie meines Beitrags von stackoverflow; Mir ist klar, ich hätte es hier fragen sollen ...
Ich möchte ein Skript ausführen, das den Hostnamen ändert, und meine Bash-Eingabeaufforderung (PS1-Variable) sofort mit dem richtigen Hostnamen aktualisieren. Wie mache ich das möglich?
Ich leite das
#!/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
In einem Terminal wie so und hol dir das
[user@host dir]# ./changehost newhostname
[user@host dir]#
Aber was ich will ist das
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
Das Terminal wird nur dann ordnungsgemäß aktualisiert, wenn ich eine neue Shell öffne.
Ich habe es auch versucht
export PS1='somestring'; export PS1='[\u@\h \W]\$'
außerhalb des Skripts im Terminal und es wechselt zu 'somestring' und zurück, aber der Hostname bleibt unverändert. : \
Ist es möglich, dass \ h zu Beginn des Prozesses im Speicher gespeichert wird und nach dem Start nicht mehr geändert werden kann?
$PS1
mit uns teilen ?
export PS1='somestring'; export PS1='[\u@\h \W]\$'
außerhalb des Skripts im Terminal zu tun, und es wechselt zu "Somestring" und zurück, aber der Hostname bleibt unverändert. : \ Ist es möglich, dass das \ h zu Beginn des Prozesses im Speicher gespeichert wird und nach dem Start nicht mehr geändert werden kann?