Tengo dos servidores, son idénticos (creo), servidores de producción y preparación.
Y tengo un script de inicio en la /etc/init/
carpeta.
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
En el servidor provisional funciona bien, pero cuando estoy ejecutando ese script en el servidor de producción, la variable HOME está vacía, el código se echo "$HOME/.rbenv"
está evaluando para"/.rbenv"
¿Cuál podría ser un problema aquí? Gracias
Respuestas:
Lea esta pregunta en stackoverflow.com y esta respuesta del usuario
grawity
en superuser.comUsted no debe usar
$HOME
eninit.d
, porque no está claro qué usuarios el hogar de uso, hasta que este usuario abre una sesión.Cita de la especificación POSIX :
Puede usar little hack, para obtener la carpeta de inicio del usuario
myuser
en su scriptEs mejor usar el script a continuación, porque generalmente puede haber otras
HOME_*
carpetas. Tales comoJAVA_HOME
etc.fuente
¿Parece que $ HOME se está interpretando antes de ir a bash? Intentaría uno de los siguientes. O agrega:
al código justo después de la descripción.
O mueva el código desde el interior del bloque de script a otro archivo de script con:
como línea 1. Luego tenga
fuente