Eu tenho dois servidores, eles são idênticos (acredito), servidores de produção e armazenamento temporário.
E eu tenho um script inicial na /etc/init/
pasta.
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
No servidor intermediário, ele funciona bem, mas quando estou executando esse script no servidor de produção, a variável HOME fica vazia, o código echo "$HOME/.rbenv"
está sendo avaliado como"/.rbenv"
O que pode ser um problema aqui? obrigado
Respostas:
Leia esta pergunta em stackoverflow.com e esta resposta pelo usuário
grawity
em superuser.comVocê não deve usar
$HOME
eminit.d
, porque não está claro quais usuários casa para uso, até que este usuário efetua login.Citação da especificação POSIX :
Você pode usar pouco truque, para obter a pasta inicial do usuário
myuser
em seu scriptÉ melhor usar o script abaixo, porque geralmente pode haver outras
HOME_*
pastas. ComoJAVA_HOME
etc.fonte
Parece que o $ HOME está sendo interpretado antes de ir para o bash? Eu tentaria um dos seguintes. Adicione:
para o código logo após a descrição.
Ou mova o código de dentro do bloco de script para outro arquivo de script com:
como linha 1. Então tenha
fonte