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, $HOS
sã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 bash
carregado.
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.
$HOSTNAME
contém o nome do host e $HOSTTYPE
identifica o hardware do sistema.
Responder2
Já que você marcou issofesta, 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.