Zmieniłem nazwę hosta, dlaczego moje bash PS1 nie zmieniło się


21

Zmieniłem nazwę hosta, edytując / etc / hostname i mogę zobaczyć nową nazwę hosta za pomocą poleceń hostnamei hostname -F.

Ale zachęta powłoki nadal pokazuje starą nazwę hosta.

Nawiasem mówiąc, jest to Ubuntu 11.0.4. Monit jest ustawiony w moim, .bashrcktórego nie edytowałem. Wylogowanie, a nawet ponowne uruchomienie nie ma wpływu.

Odpowiednia sekcja standardowego 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 jest rozbrojony podczas logowania ...)

Wydaje mi się, że nazwa hosta jest wybierana przez znak specjalny \ h.

Oto ustawienie PS1 zgłoszone w powłoce:

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

A oto co pokazuje PS1:

username@oldhostname:~$ 

Powtórzyłem ten proces, używając dokładnego polecenia w odpowiedzi Warrena. Okazuje się, że nazwa hosta działa do momentu ponownego uruchomienia, ale potem zostaje utracona, mimo że /etc/hostnamezawiera nową nazwę hosta.


Co echo $PS1pokazuje
Keith

@Keith - zaktualizowałem pytanie, aby wyświetlić PS1.
Dizzley,

Dzięki za aktualizację, która mnie wyrzuciła, ponieważ nie pamiętam, że dhcp może to zrobić, ponieważ nigdy na to nie pozwoliłem. Dziękujemy również za powrót i pozostanie na szczycie pytania oraz (ewentualnie) dodanie edycji jako odpowiedzi, witamy na unix.SE!
Caleb

Odpowiedzi:


24

Odpowiadam na własne pytanie w świetle wcześniejszych odpowiedzi Keitha i Warrena oraz faktycznego rozwiązania. Dostrzegany problem brzmiał: „Zmieniłem nazwę hosta, dlaczego moje polecenie bash PS1 nie uległo zmianie?” Rzeczywisty problem brzmiał: „Dlaczego mój system powrócił do starej nazwy hosta po ponownym uruchomieniu?”

Odpowiedź w tym konkretnym przypadku brzmiała: DHCP jest skonfigurowany do zastępowania ustawień lokalnych.

Skuteczny sposób zmiany nazwy hosta

Poniższe informacje dotyczą Ubuntu, ymmv .

  1. Zmień trwałą nazwę hosta, edytując plik /etc/hostname.

    echo 'mynewhostname' | sudo tee /etc/hostname
  2. Aby zmienić nazwę hosta dla uruchomionego systemu, użyj komendy hostname . Bez Kroku 1 byłby resetowany przy ponownym uruchomieniu. Sensowne jest użycie właśnie ustawionej wartości:

    sudo hostname -F /etc/hostname

    lub jego odpowiednik:

    sudo hostname `cat /etc/hostname`
  3. Ustaw w pełni kwalifikowaną nazwę domeny (FQDN) w /etc/hosts.

    Fragment:

    127.0.0.1    mynewhostname.mydomainname.com    mynewhostname
  4. Sprawdź, czy na komputerze działa klient DHCP. Oprócz adresu IP serwer DHCP może również zastąpić ustawienia, takie jak nazwa hosta i rozpoznawanie DNS. Usługa hostingowa „w chmurze” może to zrobić, aby obraz komputera na dysku mógł zostać ponownie użyty kilka razy bez edytowania plików konfiguracyjnych.

    Jeśli istnieje, edytuj plik konfiguracyjny klienta DHCP, /etc/default/dhcpcdaby skomentować SET_HOSTNAMEdyrektywę:

    #SET_HOSTNAME='yes'
  5. Jeśli to możliwe, uruchom ponownie system i sprawdź, czy nazwa uległa zmianie za pomocą:

    hostname

Krok 4 był dla mnie wiadomością i złapał mnie. Pomyślałem, że przydatne byłoby udokumentowanie całego procesu w tej odpowiedzi. Ten krok jest dzięki uprzejmości (Linode) instrukcji mojej usługi hostingowej, które naprawdę powinienem właściwie przeczytać.


Jeśli ta odpowiedź wydaje się odpowiednia, docenimy opinię innych, ponieważ nie mogę głosować na własną odpowiedź.
Dizzley

2

Plik /etc/hostnamezawiera trwałą kopię nazwy hosta i jest używany podczas uruchamiania do ustawienia kopii w czasie wykonywania. Aby zmienić kopię wykonawczą bez ponownego uruchamiania, powiedz:

$ sudo hostname `cat /etc/hostname`

Lub po prostu przekaż nową nazwę hosta jako parametr do hostname(1)polecenia.


Mój problem polega na wytrwałości. Użyłem i zweryfikowałem nazwę hosta środowiska wykonawczego (patrz pytanie). Również „sudo nazwa hosta -F / etc / nazwa hosta” jest alternatywną formą polecenia (nazwa hosta man). Jednak zrobiłem tak, jak sugerowałeś. Nazwa hosta zostaje utracona przy ponownym uruchomieniu. :( Umieściłem nazwę FQDN w katalogu /etc/host.conf, a /etc/host.conf jest ustawiony na używanie tylko
bindowania

Zaktualizowałem Q o rozdzielczość i za chwilę odpowiem na własne pytanie. Dzięki, Warren / Keith.
Dizzley,

Powinno to brzmieć: „Umieściłem również FQDN w / etc / hosts”.
Dizzley

-1

Widzę, że masz /hw twoim PS1, a potem wymienić FQDN, teraz, można zamieścić swoje stare i nowe hosta próbujesz użytku?

  • /h pokazuje nazwę hosta do pierwszego „.”
  • /H pokazuje pełną nazwę FQDN

Spróbuj


Cześć njekto. NB to nie h / h. Chciałbym zachować prywatność moich nazw hostów, gdy jest to serwer produkcyjny, więc „stara nazwa” i „nowa nazwa” (bez kropek). Jestem starą ręką w Unixie, ale to mnie zaskoczyło - nigdy nie widziałem, żeby dhcpcd było używane w ten sposób. Wyglądało na to, że monit PS1 był nieprawidłowy, ale prawdziwym problemem było to, że plik / etc / hostname został nadpisany przez dhcpcd podczas rozruchu. Dhcpcd jest używany, ponieważ obraz mojego komputera może zostać ponownie wdrożony lub zduplikowany na innym ustawieniu adresu IP, więc mój host, Linode, generuje wartości domyślne przy użyciu DHCP, więc każde wystąpienie mojego obrazu Ubunto jest unikalne. Jestem początkującym w chmurze, więc to była dobra zabawa.
Dizzley,

-1
  • Wielkie litery hw PS1:

    PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.