システム
ハードウェアデバイスにUbuntu-20.04 LTS Live Serverイメージがあります
要件
コンテナのホスト名をハードウェアデバイスのホスト名とまったく同じに設定したい
TAB自動補完をオンにすると、$HOS
ターミナルに 2 つの環境変数が表示されます。
HOSTNAME
HOSTTYPE
これらの変数の興味深い点は、次のいずれにも見つからないことです。
printenv
/etc/environment
/etc/bash.bashrc
残念ながら、Docker コンテナからはアクセスできなくなります。
これらの変数が環境変数の標準ファイルの一部ではない場合、どこから来るのか興味があります。
答え1
どちらの変数も、Ubuntu で対話型シェルとして使用されるシェルである bash シェルの組み込み変数です。つまり、実行中のすべての bash シェルに存在し、bash
ロード時に値が設定されます。
これらの変数の目的は、シェルから起動されたプロセスでその情報を即時かつ常に利用できるようにすることです。これがないと、その情報を必要とするプロセスは、その情報を取得するために外部ツールを起動する必要があります。したがって、これらの組み込み変数の利点は、その情報を必要とするプロセスにとっての利便性とパフォーマンスです。
対照的に、dash
Ubuntuでプロセスを起動するために使用され、シンボリックリンクされている、はるかにスリム化されたシェルはsh
、ないこれらの変数を提供します。このシェルで実行されるアプリケーションは、その情報を取得するために外部ツールに依存する必要があります。
$HOSTNAME
ホスト名が含まれており、$HOSTTYPE
システム ハードウェアを識別します。
答え2
これをタグ付けしたのでバッシュこれらはbashによって設定されます。5.2 Bash変数:
これらの変数は Bash によって設定または使用されますが、他のシェルは通常、それらを特別に扱いません。
...
ホスト名
現在のホストの名前。
ホストタイプ
Bash が実行されているマシンを説明する文字列。
Bashはどこから情報を取得するのでしょうか?uname()
これらについては。