Моя подсказка bash показывает мое имя хоста. Если я изменю свое имя хоста с помощью команды hostname
, в /etc/hosts
, /etc/hostname
и $HOSTNAME
, приглашение все равно будет использовать старое имя. Возможно ли обновить это без выхода из системы?
2 ответа
Если в вашем приглашении есть \h
или \H
, его расширение инициализируется при запуске оболочки, поэтому вам придется перезапустить bash (exec bash
). Если это вас слишком беспокоит, измените настройку приглашения на печать $HOSTNAME
.
Если вы хотите, чтобы приглашение bash динамически обновлялось по мере обновления имени хоста (как сообщается командой /bin/hostname
), вы можете сделать это:
[root@foo ~]# PS1='[\u@`/bin/hostname` \W]\$ '
[root@foo ~]# hostname
foo
[root@foo ~]# hostname bar
[root@bar ~]# hostname baz
[root@baz ~]#
Это расточительно (запускает подоболочку каждый раз, когда вы нажимаете клавишу возврата - не ужасно, но не элегантно), поэтому я бы использовал это только там, где этого требует ситуация. Я использую его при работе с базовым шаблоном виртуальной машины, который используется для создания нескольких целевых экземпляров виртуальной машины, где метаданные об экземпляре указаны в имени хоста. И даже тогда пользовательский PS1
устанавливается только временно, как часть начального сеанса входа в систему, пока развертывается экземпляр виртуальной машины роли.