Variabel lingkungan HOSTNAME di Linux

21

Pada kotak Linux saya (Gentoo Linux 2.6.31 untuk lebih spesifik) saya perhatikan bahwa variabel lingkungan HOSTNAME tersedia di shell saya, tetapi tidak dalam skrip. Sebagai contoh,

$ echo $HOSTNAME

kembali

xxxxxxxx.com,

tapi

$ ruby -e 'puts ENV["HOSTNAME"]'

kembali

nil

Di sisi lain, variabel lingkungan USER, misalnya, tersedia baik di shell maupun dalam skrip.

Saya perhatikan bahwa USER muncul di daftar variabel lingkungan yang muncul saat saya mengetik

export

yaitu,

declare -x USER="infogrind"

tapi HOSTNAME tidak. Saya menduga masalahnya ada hubungannya dengan itu.

Pertanyaan saya: 1) bagaimana saya bisa membuat HOSTNAME tersedia dalam skrip, dan 2) untuk pemahaman saya yang lebih baik, di mana variabel ini awalnya ditetapkan, dan mengapa itu tidak "diekspor"?


sumber

Jawaban:

21

$HOSTNAMEadalah variabel Bash yang diatur secara otomatis (bukan dalam file startup). Ruby mungkin berjalan shuntuk shellnya dan itu tidak termasuk variabel itu. Tidak ada alasan Anda tidak dapat mengekspornya sendiri.

bash$ echo $HOSTNAME
foobar
bash$ sh -c 'echo $HOSTNAME'

bash$ export HOSTNAME
bash$ sh -c 'echo $HOSTNAME'
foobar

Anda bisa menambahkan perintah ekspor ke salah satu file startup Anda, seperti ~/.bashrc.

Di Ruby (irb ditunjukkan):

>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"
Dijeda sampai pemberitahuan lebih lanjut.
sumber
2
Biasanya lebih baik digunakan gethostname()karena ini.
user1686
3
Standar posix menyebutkan variabel lingkungan yang Anda harapkan pada sistem yang sesuai dengan posix
qneill