$ ENV_VARと `env_var`の主な違いは何ですか?

$ ENV_VARと `env_var`の主な違いは何ですか?

私はこれが非常に簡単な質問だと思います:$ HOSTNAMEや`hostname`などの環境変数を使用することの主な違いは何ですか?どちらが適切であり、これを代表する2つの可能性があるのですか?

ベストアンサー1

無人セッションで一定時間が経過すると、古い可能性のある変数に頼るよりも、現在の値を取得するコマンドに頼る方が適切です。

[centos@abc ~]$ /bin/hostname
abc.dns.com
[centos@abc ~]$ echo $HOSTNAME
abc.dns.com
[centos@abc ~]$ uname -n
abc.dns.com

[centos@abc ~]$ sudo /bin/hostname xyz.dns.coom
[centos@abc ~]$ uname -n
xyz.dns.coom
[centos@abc ~]$ /bin/hostname
xyz.dns.coom
[centos@abc ~]$ echo $HOSTNAME
abc.dns.com
[centos@abc ~]$ 

$HOSTNAMEこれは、シェル初期化の初期に出力をキャプチャして拡張/評価されるシェル変数であり、ホスト名が動的または毎回更新されないことは明らかであると思います。/bin/hostname依存出力は、/bin/hostname同じプログラム・スペースでホスト名を評価した同じスクリプトまたはプログラムでない限り、$ HOSTNAMEよりも信頼性が高くなります。

簡単に言えば、コマンドの出力は、$ HOSTNAME(他の一般的なSHELL変数のように使用されなくなる可能性があります)を使用するよりもホスト名を知るより適切な方法/bin/hostnameです。/bin/uname -m

シェルが$ HOSTNAMEをどのように継承するのか疑問に思っている場合は、シェルが出力でこの変数を再定義する/etc/profile(または/etc/bashrc)などのグローバル初期化(rc)ファイルを読み取ることに注意してください/bin/hostname

/bin/hostname(HOSTNAME変数は、システム起動スクリプトが呼び出されるため、あらかじめコマンドを実行しないシェル以外のプログラムによって定義/初期化できることも知っておくことが重要です/etc/rc.sysinit

おすすめ記事