Esta es una copia de mi publicación de stackoverflow; Me doy cuenta de que debería haberlo preguntado aquí ...
Quiero ejecutar un script que cambie el nombre de host y que mi solicitud de bash (variable PS1) se actualice inmediatamente con el nombre de host adecuado. ¿Cómo hago que esto suceda?
Yo corro esto
#!/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
En una terminal así y consigue esto
[user@host dir]# ./changehost newhostname
[user@host dir]#
Pero lo que quiero es esto
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
El terminal se actualiza correctamente solo cuando abro un nuevo shell.
También he tratado de hacer
export PS1='somestring'; export PS1='[\u@\h \W]\$'
fuera del script en la terminal y cambia a 'somestring' y viceversa, pero el nombre de host no cambia. : \
¿Es posible que el \ h esté almacenado en la memoria cuando comience el proceso y no pueda cambiarse después del inicio?
$PS1con nosotros?
export PS1='somestring'; export PS1='[\u@\h \W]\$'fuera del script en la terminal y cambia a 'somestring' y viceversa, pero el nombre de host no ha cambiado. : \ ¿Es posible que el \ h esté almacenado en la memoria cuando comience el proceso y no pueda cambiarse después del inicio?