De onde vem a variável de ambiente especial HOSTNAME e HOSTTYPE?

De onde vem a variável de ambiente especial HOSTNAME e HOSTTYPE?

Sistema

Eu tenho uma imagem Ubuntu-20.04 LTS Live Server em um dispositivo de hardware

Requisitos

Desejo definir o nome do host de um contêiner exatamente igual ao nome do host do dispositivo de hardware

Ao pressionar TABpara preenchimento automático, $HOSsão encontradas duas variáveis ​​de ambiente no terminal:

  • HOSTNAME
  • HOSTTYPE

O interessante sobre essas variáveis ​​é que elas não são encontradas em:

  • printenv
  • /etc/environment
  • /etc/bash.bashrc

Tornando-os infelizmente inacessíveis aos Docker Containers.

Estou curioso para saber de onde vêm essas variáveis ​​se não fazem parte dos arquivos padrão para variáveis ​​de ambiente?

Responder1

Ambas as variáveis ​​são variáveis ​​internas do shell bash, o shell que no Ubuntu é usado para shells interativos. Isso significa que eles existem em qualquer shell bash em execução e seu valor é definido quando bashcarregado.

Seu objetivo é disponibilizar essas informações imediatamente e sempre para processos iniciados a partir do shell. Sem isso, os processos que necessitam dessa informação precisariam lançar ferramentas externas para obter essa informação. Portanto, o benefício dessas variáveis ​​integradas é a conveniência e o desempenho para processos que precisam dessas informações.

Em contraste, o shell muito reduzido dash, usado no Ubuntu para iniciar processos e vinculado simbolicamente ao sh, nãonãoforneça essas variáveis. Os aplicativos executados nesse shell precisam contar com ferramentas externas para obter essas informações.

$HOSTNAMEcontém o nome do host e $HOSTTYPEidentifica o hardware do sistema.

Responder2

Já que você marcou isso, estes são definidos pelo bash. Ver5.2 Variáveis ​​Bash:

Essas variáveis ​​são definidas ou usadas pelo Bash, mas outros shells normalmente não as tratam de maneira especial.

...

NOME DE ANFITRIÃO

O nome do host atual.

TIPO DE HOST

Uma string que descreve a máquina em que o Bash está sendo executado.

Onde Bash consegue as informações? Eu acho que isso chamauname()Para estes.

informação relacionada