गृह चर सेट नहीं है


12

मेरे पास दो सर्वर हैं, वे समान हैं (मेरा मानना ​​है), उत्पादन और मचान सर्वर।

और मैं /etc/init/फ़ोल्डर में upstart स्क्रिप्ट है ।

description "Discoure process"

setuid deploy
setgid deploy

respawn
respawn limit 3 30

start on runlevel [2345]
stop on runlevel [06]

script
exec /bin/bash <<'EOT'
  echo \"$HOME/.rbenv\"

  cd /home/deploy/discourse/current

  bundle exec bluepill load config/discourse.pill --no-privileged --base-dir tmp/bluepill --logfile log/bluepill.log
EOT
end script

स्टेजिंग सर्वर पर यह अच्छी तरह से काम करता है, लेकिन जब मैं उस स्क्रिप्ट को प्रोडक्शन सर्वर पर चला रहा होता हूं, तो गृह चर खाली होता है, कोड echo "$HOME/.rbenv"मूल्यांकन कर रहा है"/.rbenv"

यहां क्या समस्या हो सकती है? धन्यवाद


मैं मूल कारण नहीं जानता, लेकिन इसे पहले क्यों नहीं, सांख्यिकीय रूप से सेट किया गया?
जॉब

बोझिल पटकथा क्यों? ऐसा लगता है कि (दा) श पूरी तरह से ठीक है।
डेविड फ़ॉस्टरस्टर

जवाबों:


11

इस सवाल पर पढ़ें stackoverflow.com और इस उत्तरgrawity पर user द्वारा superuser.com

आप उपयोग नहीं करना चाहिए $HOMEमें init.dहै, क्योंकि यह स्पष्ट उपयोग करने के लिए है जो उपयोगकर्ताओं को घर नहीं है, जब तक में इस उपयोगकर्ता के लॉग।

POSIX विनिर्देशन से उद्धरण :

HOME
The system shall initialize this variable at the time of login to be a pathname
of the user's home directory. See <pwd.h>.

आप myuserअपनी स्क्रिप्ट में उपयोगकर्ता के होम फ़ोल्डर प्राप्त करने के लिए, छोटे हैक का उपयोग कर सकते हैं

su - myuser -c /usr/bin/env | grep HOME

नीचे स्क्रिप्ट का उपयोग करना बेहतर है, क्योंकि आमतौर पर अन्य HOME_*फ़ोल्डर हो सकते हैं । जैसे JAVA_HOMEआदि।

su - myuser -c /usr/bin/env | grep "^HOME="

8

$ घर की तरह लगता है कि इससे पहले कि यह बकवास करने के लिए व्याख्या की जा रही है? मैं निम्नलिखित में से एक कोशिश करूँगा। या तो जोड़ें:

env HOME=/home/MyName

विवरण के बाद कोड के लिए।

या स्क्रिप्ट ब्लॉक के अंदर से कोड को दूसरी स्क्रिप्ट फ़ाइल में ले जाएँ:

#! /bin/bash

as पंक्ति 1. फिर है

exec /path/to/my/script.sh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.