Eu mudei meu nome de host, por que meu prompt do bash PS1 está inalterado

18

Eu mudei meu nome de host editando / etc / hostname e posso ver o novo nome do host usando os comandos hostname e hostname -F .

Mas o prompt do shell ainda está mostrando o nome do host antigo.

Este é o Ubuntu 11.0.4 pelo caminho. O prompt está definido no meu .bashrc , que eu não editei. Fazer logout e até reinicializar não tem efeito.

Seção relevante do padrão Ubuntu .bashrc :

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\[3[01;34m\]\w\[3[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

($ debian_chroot não está definido quando eu faço login ...)

Eu acho que o nome do host é escolhido pelo caractere especial \ h.

Aqui está a configuração do PS1 conforme relatado no shell:

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

E aqui está o que o PS1 mostra:

username@oldhostname:~$ 

Eu repeti o processo usando o comando exato na resposta de Warren. Acontece que o nome do host funciona até a reinicialização, mas depois é perdido, mesmo que /etc/hostname contenha o novo nome do host.

    
por Dizzley 26.06.2011 / 06:32

4 respostas

20

Estou respondendo a minha própria pergunta, à luz das respostas anteriores de Keith e Warren, e da resolução real. O problema percebido foi "Eu mudei meu nome de host, por que meu prompt do bash PS1 está inalterado?" O problema real era "Por que meu sistema foi revertido para seu hostname antigo na reinicialização?"

A resposta neste caso em particular foi: O DHCP está configurado para substituir as configurações locais.

Uma maneira efetiva de alterar o nome do host

O seguinte é aplicável ao Ubuntu, ymmv .

  1. Altere o nome do host persistente editando o arquivo /etc/hostname .

    echo 'mynewhostname' | sudo tee /etc/hostname
    
  2. Para alterar o nome do host para o sistema em execução, use o comando nome do host . Sem a Etapa 1, isso seria redefinido na reinicialização. Faz sentido usar o valor que você acabou de definir:

    sudo hostname -F /etc/hostname
    

    ou seu equivalente:

    sudo hostname 'cat /etc/hostname'
    
  3. Defina o nome de domínio totalmente qualificado (FQDN) em /etc/hosts .

    Trecho:

    127.0.0.1    mynewhostname.mydomainname.com    mynewhostname
    
  4. Verifique se a máquina está executando um cliente DHCP. Além do endereço IP, um servidor DHCP pode substituir configurações como hostname e resolução de DNS. Um serviço de hospedagem "em nuvem" pode fazer isso para que a imagem de uma máquina em disco possa ser reutilizada várias vezes sem editar os arquivos de configuração.

    Se existir, edite o arquivo de configuração do cliente DHCP /etc/default/dhcpcd para comentar a diretiva SET_HOSTNAME :

    #SET_HOSTNAME='yes'
    
  5. Quando possível, reinicie o sistema e verifique se o nome foi alterado com:

    hostname
    

O passo 4 foi novidade para mim e me pegou. Eu pensei que seria útil documentar todo o processo nesta resposta. Esse passo é cortesia de (Linode) instruções do meu serviço de hospedagem que eu realmente deveria ter lido corretamente.

    
por 27.06.2011 / 06:35
2

O arquivo /etc/hostname contém a cópia persistente do nome do host e é usado durante a inicialização para definir a cópia do tempo de execução. Para alterar a cópia do tempo de execução sem reinicializar, diga:

$ sudo hostname 'cat /etc/hostname'

Ou apenas passe o novo nome do host como o parâmetro para o comando hostname(1) .

    
por 26.06.2011 / 09:11
-1

Vejo que você tem /h no seu PS1 e, em seguida, mencione o FQDN agora você poderia postar seu antigo & um novo nome de host que você está tentando usar?

  • /h mostra o nome do host até o primeiro '.'
  • /H mostra o FQDN completo

experimente

    
por 26.06.2011 / 10:54
-1
  • Capitalize o h no seu PS1 :

    PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
    
por 30.12.2014 / 16:25