হোম ভেরিয়েবল সেট করা নেই


12

আমার দুটি সার্ভার রয়েছে, তারা অভিন্ন (আমি বিশ্বাস করি), উত্পাদন এবং স্টেজিং সার্ভার।

এবং আমি /etc/init/ফোল্ডারে আপস্টার্ট স্ক্রিপ্ট আছে ।

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"

এখানে কী সমস্যা হতে পারে? ধন্যবাদ


আমি এর মূল কারণটি জানি না, তবে স্থিরভাবে কেন প্রথমে সেট করব না?
जॉবিন

ভারী বাশ স্ক্রিপ্ট কেন? দেখে মনে হচ্ছে (দা) শি এর পুরোপুরি সূক্ষ্ম ব্যাখ্যা করবে।
ডেভিড ফোস্টার 19

উত্তর:


11

এই পড়ুন উপর stackoverflow.com প্রশ্ন ও এই উত্তর ব্যবহারকারী দ্বারা grawitysuperuser.com উপর

আপনি ব্যবহার করা উচিত নয় $HOMEমধ্যে init.d, কারণ এটি স্পষ্ট ব্যবহার যা ব্যবহারকারীদের হোম নয়, যতক্ষণ না এই ব্যবহারকারী লগ।

পসিক্স স্পেসিফিকেশন থেকে উদ্ধৃতি :

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

দেখে মনে হচ্ছে ash হোমটি ব্যাশ যাওয়ার আগে ব্যাখ্যা করা হচ্ছে? আমি নিম্নলিখিত একটি চেষ্টা করব। হয় যোগ করুন:

env HOME=/home/MyName

বর্ণনার ঠিক পরে কোডে।

অথবা স্ক্রিপ্ট ব্লকের ভিতরে থেকে কোডটি অন্য স্ক্রিপ্ট ফাইলে নিয়ে যান:

#! /bin/bash

লাইন হিসাবে 1। তারপর আছে

exec /path/to/my/script.sh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.