Uma variável de ambiente é definida de uma vez por todas (para um determinado processo; quando um processo inicia outro, o filho herda o ambiente do pai). Portanto, acessar $HOSTNAME
lê diretamente um valor na memória. Em contraste, cada vez que você avaliar a substituição do comando 'hostname'
(também escrito $(hostname)
), isso executará o comando hostname
.
No caso de $HOSTNAME
e hostname
, na prática, não faz diferença. $HOSTNAME
é marginalmente mais rápido. Em princípio, $HOSTNAME
pode estar errado se você executar HOSTNAME=some_bogus_value
(considerando que $(hostname)
pode estar errado se você colocar algum programa hostname
diferente no seu $PATH
) e apenas hostname
acompanhar -data se você alterar seu nome de host.
Geralmente, há (mas nem sempre) uma variável de ambiente HOSTNAME
, porque ela é usada com frequência (por exemplo, em prompts de shell) e quase nunca muda. Há um comando hostname
(na maioria dos sistemas) para definir o valor de HOSTNAME
( HOSTNAME=$(hostname)
) e para alterar o nome do host ( hostname $(cat /etc/hostname)
, normalmente feito no início do processo de inicialização).