System
Ich habe ein Ubuntu-20.04 LTS Live Server-Image auf einem Hardwaregerät
Anforderungen
Ich möchte den Hostnamen eines Containers genau so einstellen, wie den Hostnamen des Hardwaregeräts
Wenn man TABauf Autovervollständigung drückt, $HOS
findet man im Terminal zwei Umgebungsvariablen:
HOSTNAME
HOSTTYPE
Das Interessante an diesen Variablen ist, dass sie weder in:
printenv
/etc/environment
/etc/bash.bashrc
Dadurch sind sie für Docker-Container leider unzugänglich.
Mich würde interessieren, woher diese Variablen stammen, wenn sie nicht zu den Standarddateien für Umgebungsvariablen gehören.
Antwort1
Beide Variablen sind eingebaute Variablen der Bash-Shell, der Shell, die in Ubuntu für interaktive Shells verwendet wird. Das bedeutet, dass sie in jeder laufenden Bash-Shell vorhanden sind und ihr Wert beim bash
Laden festgelegt wird.
Ihr Zweck besteht darin, diese Informationen sofort und immer für Prozesse verfügbar zu machen, die von der Shell gestartet werden. Ohne diese Funktion müssten Prozesse, die diese Informationen benötigen, externe Tools starten, um diese Informationen abzurufen. Der Vorteil dieser integrierten Variablen liegt also in der Benutzerfreundlichkeit und Leistung für Prozesse, die diese Informationen benötigen.
Im Gegensatz dazu bietet die stark abgespeckte dash
Shell, die in Ubuntu zum Starten von Prozessen verwendet wird und mit der ein symbolischer Link verknüpft ist ,sh
nichtGeben Sie diese Variable an. Anwendungen, die unter dieser Shell ausgeführt werden, müssen sich auf externe Tools verlassen, um diese Informationen zu erhalten.
$HOSTNAME
enthält den Hostnamen und $HOSTTYPE
identifiziert die Systemhardware.
Antwort2
Da du dies markiert hastSchlag, diese werden von bash gesetzt. Siehe5.2 Bash-Variablen:
Diese Variablen werden von Bash festgelegt oder verwendet, aber andere Shells behandeln sie normalerweise nicht speziell.
...
HOSTNAME
Der Name des aktuellen Hosts.
HOSTTYPE
Eine Zeichenfolge, die die Maschine beschreibt, auf der Bash ausgeführt wird.
Woher bekommt Bash die Informationen? Ich glaube, es ruftuname()
für diese.