लिनक्स पर HOSTNAME पर्यावरण चर


21

मेरे लिनक्स बॉक्स (विशिष्ट होने के लिए Gentoo Linux 2.6.31) पर मैंने देखा है कि HOSTNAME पर्यावरण चर मेरे शेल में उपलब्ध है, लेकिन लिपियों में नहीं। उदाहरण के लिए,

$ echo $HOSTNAME

रिटर्न

xxxxxxxx.com,

परंतु

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

रिटर्न

nil

दूसरी ओर, USER पर्यावरण चर, उदाहरण के लिए, शेल और लिपियों दोनों में उपलब्ध है।

मैंने देखा है कि USER पर्यावरण चर की सूची में दिखाई देता है जो कि मेरे टाइप करने पर दिखाई देता है

export

अर्थात,

declare -x USER="infogrind"

लेकिन HOSTNAME नहीं करता है। मुझे संदेह है कि इस मुद्दे का कुछ लेना-देना है।

मेरे प्रश्न: 1) मैं अपनी बेहतर समझ के लिए HOSTNAME को लिपियों में कैसे उपलब्ध करवा सकता हूं, और 2) यह चर शुरुआत में कहां सेट किया गया है, और यह "निर्यातित" क्यों नहीं है?

जवाबों:


21

$HOSTNAMEएक बैश वैरिएबल है जो स्वचालित रूप से (स्टार्टअप फ़ाइल की बजाय) सेट है। रूबी शायद shअपने खोल के लिए चलती है और इसमें वह चर शामिल नहीं है। ऐसा कोई कारण नहीं है कि आप इसे स्वयं निर्यात नहीं कर सकते।

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

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

आप निर्यात कमांड को अपनी एक स्टार्टअप फाइल में जोड़ सकते हैं, जैसे कि ~/.bashrc

रूबी में (irb दिखाया गया है):

>> require 'socket'
=> true
>> Socket.gethostname
=> "bazinga"

2
gethostname()इस वजह से इसका इस्तेमाल करना बेहतर है ।
user1686

3
पॉज़िक्स मानक उन पर्यावरण चरों की गणना करता है, जिनकी आपको एक पॉज़िक्स-अनुरूप प्रणालियों पर अपेक्षा करनी चाहिए, और HOSTNAME सूची में नहीं है: pubs.opengroup.org/onlinepubs/009695399/basedks/…
qneill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.