我有两个服务器,它们是相同的(我相信),生产服务器和登台服务器。
而且我在/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
在登台服务器上,它运行良好,但是当我在生产服务器上运行该脚本时,HOME变量为空,代码echo "$HOME/.rbenv"
正在评估为"/.rbenv"
这可能是个问题吗?谢谢
在stackoverflow.com上阅读此问题,并在superuser.com上按用户阅读此答案grawity
你不应该使用$HOME
的init.d
,因为它是不明确哪些用户在家中使用,直到该用户登录。
引用POSIX规范:
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="
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句