Questa è una copia del mio post da StackOverflow; Mi rendo conto che avrei dovuto chiedere qui ...
Voglio eseguire uno script che cambi il nome host e che il mio prompt di bash (variabile PS1) si aggiorni immediatamente con il nome host appropriato. Come posso farlo accadere?
Corro questo
#!/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 un terminale così e prendi questo
[user@host dir]# ./changehost newhostname
[user@host dir]#
Ma quello che voglio è questo
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
Il terminale viene aggiornato correttamente solo quando apro una nuova shell.
Ho anche provato a fare
export PS1='somestring'; export PS1='[\u@\h \W]\$'
al di fuori dello script nel terminale e passa a "somestring" e viceversa, ma il nome host è invariato. : \
È possibile che \ h sia archiviato in memoria all'avvio del processo e che non possa essere modificato dopo l'avvio?
$PS1
con noi?
export PS1='somestring'; export PS1='[\u@\h \W]\$'
al di fuori dello script nel terminale e passa a 'somestring' e viceversa, ma il nome host è invariato. : \ È possibile che \ h sia archiviato in memoria all'avvio del processo e non possa essere modificato dopo l'avvio?