¿De dónde proviene la variable de entorno especial de HOSTNAME y HOSTTYPE?

¿De dónde proviene la variable de entorno especial de HOSTNAME y HOSTTYPE?

Sistema

Tengo una imagen de Ubuntu-20.04 LTS Live Server en un dispositivo de hardware

Requisitos

Deseo configurar el nombre de host de un contenedor exactamente igual que el nombre de host del dispositivo de hardware

Al presionar TABpara autocompletar, $HOSse encuentran dos variables de entorno en la terminal:

  • HOSTNAME
  • HOSTTYPE

Lo interesante de estas variables es que tampoco se encuentran en:

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

Desafortunadamente, los hace inaccesibles para Docker Containers.

Tengo curiosidad de ¿de dónde provienen estas variables si no forman parte de los archivos estándar para variables de entorno?

Respuesta1

Ambas variables son variables integradas del shell bash, el shell que en Ubuntu se utiliza para shells interactivos. Esto significa que existen en cualquier shell bash en ejecución y su valor se establece cuando bashse carga.

Su propósito es hacer que esa información esté disponible de inmediato y siempre para los procesos iniciados desde el shell. Sin esto, los procesos que necesitan esa información necesitarían lanzar herramientas externas para obtener esa información. Entonces, el beneficio de estas variables integradas es la conveniencia y el rendimiento para los procesos que necesitan esa información.

Por el contrario, el shell mucho más reducido dash, utilizado en Ubuntu para iniciar procesos y vinculado simbólicamente a sh, nonoproporcionar estas variables. Las aplicaciones que se ejecutan bajo este shell deben depender de herramientas externas para obtener esa información.

$HOSTNAMEcontiene el nombre del host e $HOSTTYPEidentifica el hardware del sistema.

Respuesta2

Desde que etiquetaste esto, estos los establece bash. Ver5.2 Variables de bash:

Bash establece o utiliza estas variables, pero otros shells normalmente no las tratan de manera especial.

...

NOMBRE DE HOST

El nombre del host actual.

TIPO DE HOST

Una cadena que describe la máquina en la que se ejecuta Bash.

¿De dónde obtiene Bash la información? creo que llamauname()para éstos.

información relacionada