Я знаю, что вы можете сделать что-то вроде этого:

export HOSTNAME=xyz

echo $HOSTNAME

И вы увидите сделанные изменения. Однако, где bash читает при запуске, чтобы установить эту переменную среды? Я знаю, что вы, конечно, можете написать оператор экспорта в .bashrc , но это скорее обходной путь, чем реальное решение.

Я также попытался отредактировать /etc/hosts , но сделанные изменения не пережили перезагрузку.

Какие-либо предложения?

1 ответ1

1

Это зависит от вашего дистрибутива: вы можете сделать за 3 шага

  1. Отредактируйте hostname-файл вашего дистрибутива (см. Ниже)

    sudo nano /etc/hostname
    
  2. Дайте команды:

    sudo hostname YOUR_NEW_HOSTNAME  # to change it for this session  
    hostname                         # just to check it  
    
  3. После редактирования файла /etc/hosts

    sudo nano /etc/hosts
    

Debian/Ubuntu
Вам нужно отредактировать файл /etc/hostname:
замените реальное имя новым.

Slackware Suse и Opensuse
Файл для редактирования это /etc/HOSTNAME:
замените реальное имя новым.

Redhat, CentOS, Fedora
Файл для редактирования это /etc/sysconfig/network:
Вы должны заменить имя в строке, где вы найдете HOSTNAME=OldName.OldDomain

Примечание: если вы не находитесь в sudoers, вы можете получить привилегии root, например, с помощью su - , а после давать те же команды без sudo .


В некоторых (возможно, старых) дистрибутивах Debian используется /etc/init.d/hostname.sh во время загрузки, где написано /etc/hostname oldname . Чтобы сделать его эффективным, вы тоже должны измениться.


Для решения, действительного до следующей перезагрузки, вы можете использовать hostname newname .
Возможно, он не появится в вашей текущей оболочке, потому что переменные устанавливаются при открытии (вы можете исправить это вручную или работать в новой оболочке).

От man hostname в разделе SET NAME

При вызове с одним аргументом или с параметром --file команды задают имя хоста или имя домена NIS/YP. hostname использует функцию sethostname(2), в то время как все три доменных имени, ypdomainname и nisdomain- name используют setdomainname(2). Обратите внимание, что это действует только до следующей перезагрузки. Отредактируйте /etc /hostname для постоянного изменения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .