Я изменил свое имя хоста, почему мой bash PS1 не изменился

Я изменил свое имя хоста, отредактировав / etc / hostname и увидев новое имя хоста, используя команды hostname и hostname -F .

Но приглашение оболочки по-прежнему показывает старое имя хоста.

Кстати, это Ubuntu 11.0.4. Запрос установлен в моем .bashrc который я не редактировал. Выход из системы и даже перезагрузка не влияют.

Соответствующий раздел стандартного 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 не работает при входе в систему …)

Я предполагаю, что имя хоста выбрано специальным символом \ h.

Вот настройка PS1, как сообщается в оболочке:

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

И вот что показывает PS1:

 username@oldhostname:~$ 

Я повторил процесс, используя точную команду в ответе Уоррена. Оказывается, имя хоста работает до перезагрузки, но затем оно теряется, хотя имя /etc/hostname содержит новое имя хоста.

  • LXC мигрирует между хостами
  • Попытка установить ubuntu - нет hdd?
  • Проверка SVN под другим именем пользователя
  • Не удается завершить обновление php5-cli
  • Ubuntu, запущенный на моем USB-накопителе, часто встречает ошибки сегментации
  • smbpasswd не удалось установить новую Samba на новом Ubuntu 11.04
  • Линейные системные файлы перемещены, как вернуться при загрузке с установщика?
  • Переключение уровня запуска при перемещении / var в другой раздел
  • 4 Solutions collect form web for “Я изменил свое имя хоста, почему мой bash PS1 не изменился”

    Я отвечаю на свой вопрос, в свете предыдущих ответов Кита и Уоррена, и фактического разрешения. Понятая проблема заключалась в том, что «я изменил свое имя хоста, почему мой bash PS1 не изменился?» Фактическая проблема: «Почему моя система вернулась к своему старому имени хоста при перезагрузке?»

    Ответ в этом конкретном случае: DHCP настроен на переопределение локальных настроек.

    Эффективный способ изменения имени хоста

    Для Ubuntu, ymmv применимо следующее .

    1. Измените постоянное имя хоста, отредактировав файл /etc/hostname .

       sudo echo 'mynewhostname' > /etc/hostname 
    2. Чтобы изменить имя хоста для используемой системы, используйте команду hostname . Без шага 1 это будет сброшено при перезагрузке. Имеет смысл использовать значение, которое вы только что установили:

       sudo hostname -F /etc/hostname 

      или его эквивалент:

       sudo hostname `cat /etc/hostname` 
    3. Установите полное доменное имя (FQDN) в /etc/hosts .

      Выдержка:

       127.0.0.1 mynewhostname.mydomainname.com mynewhostname 
    4. Проверьте, работает ли на компьютере клиент DHCP. В дополнение к IP-адресу сервер DHCP может переопределить такие параметры, как имя хоста и разрешение DNS. «Облачный» хостинг-сервис может сделать это, чтобы изображение машины на диске можно было повторно использовать несколько раз без редактирования файлов конфигурации.

      Если он существует, отредактируйте файл конфигурации клиента DHCP /etc/default/dhcpcd чтобы прокомментировать директиву SET_HOSTNAME :

       #SET_HOSTNAME='yes' 
    5. Когда это возможно, перезагрузите систему и проверьте, изменилось ли имя:

       hostname 

    Шаг 4 был для меня новостью и поймал меня. Я думал, что было бы полезно документировать весь процесс в этом ответе. Этот шаг является любезностью (Linode) инструкций моего хостинга, которые я действительно должен был прочитать правильно.

    Файл /etc/hostname содержит постоянную копию имени хоста и используется во время загрузки для установки копии времени выполнения. Чтобы изменить копию во время выполнения без перезагрузки, скажите:

     $ sudo hostname `cat /etc/hostname` 

    Или просто передайте новое имя хоста в качестве параметра в команду hostname(1) .

    Я вижу, что у вас есть /h в вашем PS1 а затем упоминается полное доменное имя, теперь вы можете опубликовать свое старое и новое имя хоста, которое вы пытаетесь использовать?

    • /h показывает имя хоста до первого '.'
    • /H показывает полное полное доменное имя

    попробуйте

    • Заглавные буквы h в PS1 :

       PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ ' 
    Linux и Unix - лучшая ОС в мире.