Esta é uma cópia da minha postagem do stackoverflow; Sei que deveria ter perguntado aqui ...
Desejo executar um script que altere o nome do host e faça com que meu prompt do bash (variável PS1) seja atualizado imediatamente com o nome do host adequado. Como faço isso acontecer?
Eu corro isso
#!/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
Em um terminal como esse e obtenha este
[user@host dir]# ./changehost newhostname
[user@host dir]#
Mas o que eu quero é isso
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
O terminal é atualizado corretamente apenas quando abro um novo shell.
Eu também tentei fazer
export PS1='somestring'; export PS1='[\u@\h \W]\$'
fora do script no terminal e ele muda para 'somestring' e volta, mas o nome do host permanece inalterado. : \
É possível que o \ h esteja armazenado na memória quando o processo começa e não pode ser alterado após a inicialização?
$PS1conosco?
export PS1='somestring'; export PS1='[\u@\h \W]\$'fora do script no terminal e ele muda para 'somestring' e volta, mas o nome do host é inalterado. : \ É possível que o \ h esteja armazenado na memória quando o processo começa e não pode ser alterado após a inicialização?