HOSTNAME と HOSTTYPE の特別な環境変数はどこから来るのでしょうか?

HOSTNAME と HOSTTYPE の特別な環境変数はどこから来るのでしょうか?

システム

ハードウェアデバイスにUbuntu-20.04 LTS Live Serverイメージがあります

要件

コンテナのホスト名をハードウェアデバイスのホスト名とまったく同じに設定したい

TAB自動補完をオンにすると、$HOSターミナルに 2 つの環境変数が表示されます。

  • HOSTNAME
  • HOSTTYPE

これらの変数の興味深い点は、次のいずれにも見つからないことです。

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

残念ながら、Docker コンテナからはアクセスできなくなります。

これらの変数が環境変数の標準ファイルの一部ではない場合、どこから来るのか興味があります。

答え1

どちらの変数も、Ubuntu で対話型シェルとして使用されるシェルである bash シェルの組み込み変数です。つまり、実行中のすべての bash シェルに存在し、bashロード時に値が設定されます。

これらの変数の目的は、シェルから起動されたプロセスでその情報を即時かつ常に利用できるようにすることです。これがないと、その情報を必要とするプロセスは、その情報を取得するために外部ツールを起動する必要があります。したがって、これらの組み込み変数の利点は、その情報を必要とするプロセスにとっての利便性とパフォーマンスです。

対照的に、dashUbuntuでプロセスを起動するために使用され、シンボリックリンクされている、はるかにスリム化されたシェルはshないこれらの変数を提供します。このシェルで実行されるアプリケーションは、その情報を取得するために外部ツールに依存する必要があります。

$HOSTNAMEホスト名が含まれており、$HOSTTYPEシステム ハードウェアを識別します。

答え2

これをタグ付けしたのでこれらはbashによって設定されます。5.2 Bash変数:

これらの変数は Bash によって設定または使用されますが、他のシェルは通常、それらを特別に扱いません。

...

ホスト名

現在のホストの名前。

ホストタイプ

Bash が実行されているマシンを説明する文字列。

Bashはどこから情報を取得するのでしょうか?uname()これらについては。

関連情報