J'ai changé mon nom d'hôte, pourquoi mon bash PS1 est-il inchangé

J'ai changé mon nom d'hôte en éditant / etc / hostname et peut voir le nouveau nom d'hôte en utilisant les commands hostname et hostname -F .

Mais l'invite du shell affiche toujours l'ancien nom d'hôte.

C'est d'ailleurs Ubuntu 11.0.4. L'invite est définie dans mon .bashrc que je n'ai pas édité. La déconnection et même le redémarrage n'a aucun effet.

Section pertinente de la norme Ubuntu .bashrc :

 if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi 

($ debian_chroot est désactivé lorsque je me connecte …)

Je suppose que le nom d'hôte est repris par le caractère spécial \ h.

Voici le paramètre PS1 tel que rapporté dans le shell:

 PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 

Et voici ce que montre PS1:

 username@oldhostname:~$ 

J'ai répété le process en utilisant le commandment exact dans la réponse de Warren. Il s'avère que le nom d'hôte fonctionne jusqu'au redémarrage, mais il est perdu même si /etc/hostname contient le nouveau nom d'hôte.

Je réponds à ma propre question, à la lumière des réponses précédentes de Keith et Warren, et de la résolution actuelle. Le problème perçu était "J'ai changé mon nom d'hôte, pourquoi mon bash PS1 est-il inchangé?" Le véritable problème était "Pourquoi mon système est-il returnné à son ancien nom d'hôte au redémarrage?"

La réponse dans ce cas particulier était: DHCP est configuré pour replace les parameters locaux.

Un moyen efficace de modifier le nom d'hôte

Ce qui suit s'applique à Ubuntu, ymmv .

  1. Changez le nom d'hôte persistant en modifiant le file /etc/hostname .

     sudo echo 'mynewhostname' > /etc/hostname 
  2. Pour changer le nom d'hôte du système en cours d'exécution, utilisez la command hostname . Sans l'étape 1, cela serait réinitialisé au redémarrage. Il est logique d'utiliser la valeur que vous venez de définir:

     sudo hostname -F /etc/hostname 

    ou son équivalent:

     sudo hostname `cat /etc/hostname` 
  3. Définissez le nom de domaine complet (FQDN) dans /etc/hosts .

    Extrait:

     127.0.0.1 mynewhostname.mydomainname.com mynewhostname 
  4. Vérifiez si la machine exécute un client DHCP. En plus de l'adresse IP, un server DHCP peut replace les parameters tels que le nom d'hôte et la résolution DNS. Un service d'hébergement «cloud» pourrait le faire afin que l'image d'une machine sur le disque puisse être réutilisée plusieurs fois sans modifier les files de configuration.

    S'il existe, éditez le file de configuration du client DHCP /etc/default/dhcpcd pour /etc/default/dhcpcd en commentaire la directive SET_HOSTNAME :

     #SET_HOSTNAME='yes' 
  5. Dans la mesure du possible, redémarrez le système et vérifiez que le nom a changé avec:

     hostname 

L'étape 4 était une nouvelle pour moi et m'a rattrapé. Je pensais qu'il serait utile de documenter l'set du process dans cette réponse. Cette étape est une courtoisie de (Linode) les instructions de mon service d'hébergement que j'aurais vraiment dû lire correctement.

Le file /etc/hostname contient la copy persistante du nom d'hôte et est utilisé lors du démarrage pour définir la copy au moment de l'exécution. Pour modifier la copy au moment de l'exécution sans redémarrer, dites:

 $ sudo hostname `cat /etc/hostname` 

Ou transmettez simplement le nouveau nom d'hôte en tant que paramètre à la command hostname(1) .

Je vois que vous avez /h dans votre PS1 et ensuite mentionnez FQDN, maintenant, pourriez-vous postr votre ancien et un nouveau nom d'hôte que vous essayez d'utiliser?

  • /h affiche le nom d'hôte jusqu'au premier '.'
  • /H affiche le nom de domaine complet

Essaie

  • Capitaliser le h dans votre PS1 :

     PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '