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


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.