Ceci est une copie de mon message de stackoverflow; Je réalise que j'aurais dû le demander ici ...
Je veux exécuter un script qui modifie le nom d'hôte et que ma demande bash (variable PS1) soit mise à jour immédiatement avec le nom d'hôte approprié. Comment puis-je y arriver?
Je dirige ça
#!/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
Dans un terminal comme ça et obtenez ceci
[user@host dir]# ./changehost newhostname
[user@host dir]#
Mais ce que je veux c'est ça
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
Le terminal n'est correctement mis à jour que lorsque j'ouvre un nouveau shell.
J'ai aussi essayé de faire
export PS1='somestring'; export PS1='[\u@\h \W]\$'
en dehors du script dans le terminal et il passe à «somestring» et vice-versa, mais le nom d'hôte est inchangé. : \
Est-il possible que le \ h soit stocké en mémoire au début du processus et ne puisse pas être modifié après le démarrage?
$PS1avec nous?
export PS1='somestring'; export PS1='[\u@\h \W]\$'dehors du script dans le terminal et il passe à «somestring» et vice-versa, mais le nom d'hôte est inchangé. : \ Est-il possible que le \ h soit stocké en mémoire lorsque le processus commence et ne peut pas être modifié après le démarrage?