Saya memiliki dua server, mereka identik (saya percaya), server produksi dan pementasan.
Dan saya punya skrip pemula dalam /etc/init/
folder.
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
Pada staging server berfungsi dengan baik, tetapi ketika saya menjalankan skrip itu di server produksi maka variabel HOME kosong, kode echo "$HOME/.rbenv"
tersebut mengevaluasi ke"/.rbenv"
Apa yang mungkin menjadi masalah di sini? Terima kasih
Jawaban:
Baca pertanyaan ini di stackoverflow.com dan jawaban ini oleh pengguna
grawity
di superuser.comAnda tidak harus menggunakan
$HOME
diinit.d
, karena tidak jelas yang pengguna rumah untuk digunakan, sampai pengguna ini log di.Kutipan dari spesifikasi POSIX :
Anda dapat menggunakan sedikit hack, untuk mendapatkan folder home user
myuser
dalam skrip AndaLebih baik menggunakan skrip di bawah ini, karena biasanya bisa ada
HOME_*
folder lain . SepertiJAVA_HOME
dllsumber
Sepertinya $ HOME ditafsirkan sebelum pergi ke bash? Saya akan mencoba salah satu dari yang berikut ini. Tambahkan:
ke kode setelah deskripsi.
Atau pindahkan kode dari dalam blok skrip ke file skrip lain dengan:
sebagai baris 1. Lalu miliki
sumber