Ich habe meinen Hostnamen geändert. Warum ist meine Bash-PS1-Eingabeaufforderung unverändert?


21

Ich habe meinen Hostnamen durch Bearbeiten von / etc / hostname geändert und kann den neuen Hostnamen mit den Befehlen hostnameund hostname -Fanzeigen.

Die Shell-Eingabeaufforderung zeigt jedoch weiterhin den alten Hostnamen an.

Dies ist übrigens Ubuntu 11.0.4. Die Eingabeaufforderung ist in my eingestellt, .bashrcdie ich nicht bearbeitet habe. Abmelden und sogar Neustarten hat keine Auswirkung.

Relevanter Abschnitt des Ubuntu-Standards .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 ist nicht gesetzt, wenn ich mich anmelde ...)

Ich vermute, der Hostname wird vom Sonderzeichen \ h übernommen.

Hier ist die PS1-Einstellung, wie in der Shell angegeben:

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

Und hier ist was PS1 zeigt:

username@oldhostname:~$ 

Ich wiederholte den Vorgang mit dem genauen Befehl in Warrens Antwort. Es stellt sich heraus, dass der Hostname bis zum Neustart funktioniert, dann aber verloren geht, obwohl er /etc/hostnameden neuen Hostnamen enthält.


Was echo $PS1zeigt?
Keith

@ Keith - Ich habe die Frage aktualisiert, um PS1 anzuzeigen.
Dizzley

Vielen Dank für das Update, das mich abgehauen hat, weil ich mich nicht daran erinnerte, dass DHCP das konnte, weil ich es nie zugelassen habe. Vielen Dank auch, dass Sie zurückgekommen sind, die Frage beantwortet haben und (eventuell) Ihre Bearbeitung als Antwort hinzugefügt haben. Willkommen bei unix.SE!
Caleb

Antworten:


24

Ich beantworte meine eigene Frage im Lichte früherer Antworten von Keith und Warren und der tatsächlichen Lösung. Das wahrgenommene Problem war: "Ich habe meinen Hostnamen geändert. Warum bleibt meine PS1-Eingabeaufforderung für die Bash unverändert?" Das eigentliche Problem war "Warum wurde mein System beim Neustart auf den alten Hostnamen zurückgesetzt?"

In diesem speziellen Fall lautete die Antwort: DHCP ist so konfiguriert, dass lokale Einstellungen überschrieben werden.

Eine effektive Möglichkeit, den Hostnamen zu ändern

Das Folgende gilt für Ubuntu, ymmv .

  1. Ändern Sie den persistenten Hostnamen, indem Sie die Datei bearbeiten /etc/hostname.

    echo 'mynewhostname' | sudo tee /etc/hostname
  2. Um den Hostnamen für das laufende System zu ändern , um die Verwendung Hostnamen - Befehl. Ohne Schritt 1 würde dies beim Neustart zurückgesetzt. Es ist sinnvoll, den gerade eingestellten Wert zu verwenden:

    sudo hostname -F /etc/hostname

    oder sein Äquivalent:

    sudo hostname `cat /etc/hostname`
  3. Legen Sie den vollqualifizierten Domänennamen (FQDN) in fest /etc/hosts.

    Auszug:

    127.0.0.1    mynewhostname.mydomainname.com    mynewhostname
  4. Überprüfen Sie, ob auf dem Computer ein DHCP-Client ausgeführt wird. Zusätzlich zur IP-Adresse kann ein DHCP-Server Einstellungen wie Hostname und DNS-Auflösung überschreiben. Ein "Cloud" -Hostingdienst kann dies tun, damit das Image eines Computers auf der Festplatte mehrmals wiederverwendet werden kann, ohne Konfigurationsdateien zu bearbeiten.

    Wenn es existiert, bearbeiten Sie die DHCP-Client-Konfigurationsdatei /etc/default/dhcpcd, um die SET_HOSTNAMEDirektive zu kommentieren :

    #SET_HOSTNAME='yes'
  5. Starten Sie das System nach Möglichkeit neu und überprüfen Sie, ob sich der Name geändert hat mit:

    hostname

Schritt 4 war eine Neuigkeit für mich und hat mich erwischt. Ich dachte, es wäre nützlich, den gesamten Prozess in dieser Antwort zu dokumentieren. Dieser Schritt ist mit freundlicher Genehmigung von (Linode) den Anweisungen meines Hosting-Dienstes, die ich eigentlich hätte lesen müssen.


Wenn diese Antwort angemessen erscheint, würde ich mich über eine Gegenstimme freuen, da ich nicht für meine eigene Antwort stimmen kann.
Dizzley

2

Die Datei /etc/hostnameenthält die persistente Kopie des Hostnamens und wird während des Startvorgangs zum Festlegen der Laufzeitkopie verwendet. Um die Laufzeitkopie ohne Neustart zu ändern, sagen Sie:

$ sudo hostname `cat /etc/hostname`

Oder übergeben Sie einfach den neuen Hostnamen als Parameter an den hostname(1)Befehl.


Mein Problem ist die Beharrlichkeit. Ich habe den Laufzeit-Hostnamen verwendet und überprüft (siehe Frage). "Sudo hostname -F / etc / hostname" ist auch eine alternative Form des Befehls (man hostname). Ich habe jedoch getan, was Sie vorgeschlagen haben. Der Hostname geht beim Neustart verloren. :( Ich habe auch den FQDN in /etc/host.conf und /etc/host.conf gesetzt, um nur Bind zu verwenden. Ich bin immer noch ratlos.
Dizzley

Ich habe das Q mit einer Lösung aktualisiert und werde in Kürze meine eigene Frage beantworten. Danke Warren / Keith.
Dizzley

Das hätte lauten sollen: "Ich habe den vollqualifizierten Domänennamen auch in / etc / hosts abgelegt."
Dizzley

-1

Ich sehe, dass Sie /hin Ihrem PS1FQDN haben und dann erwähnen, könnten Sie jetzt Ihren alten und einen neuen Hostnamen posten, den Sie verwenden möchten?

  • /h zeigt den Hostnamen bis zum ersten '.'
  • /H zeigt den vollständigen FQDN

Versuche es


Hi njekto. NB es ist \ h nicht / h. Ich mag es, meine Hostnamen privat zu halten, wenn es sich um einen Produktionsserver handelt, also "alter Name" und "neuer Name" (keine Punkte). Ich bin ein alter Hase bei Unix, aber das hat mich verblüfft - ich habe nie gesehen, dass Dhcpcd so verwendet wird. Es sah so aus, als ob die PS1-Eingabeaufforderung falsch war, aber das eigentliche Problem war, dass / etc / hostname beim Booten von dhcpcd überschrieben wird. Dhcpcd wird verwendet, weil mein Maschinen-Image erneut bereitgestellt oder auf eine andere IP-Adresse dupliziert werden kann, sodass mein Hoster, Linode, mithilfe von DHCP Standardwerte generiert, sodass jede Instanz meines Ubunto-Images einzigartig ist. Ich bin ein Cloud-Anfänger, also hat das Spaß gemacht.
Dizzley

-1
  • Nutzen Sie das hin Ihrem PS1:

    PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.