Dan*_*ton 10 login su path environment-variables
我在使用我们的新贵脚本时遇到了一些问题,该脚本更改了用户并启动了一些 ruby 守护进程。
在过去,我只会bash -c "do the business" -l someuser
确保使用该-l
标志来模拟登录。
到目前为止,这一直很有效,我们的 ruby 进程一直在抛出以下错误:require: no such file to load -- rubygems (LoadError)
经过一些调查,我发现此错误仅在我以 root 用户身份运行脚本时发生,即(当我sudo su
或由 upstart 运行时)。
我认为这是一个 PATH 问题,因为当我首先手动设置路径时,它可以解决问题。
有没有办法改变用户并加载整个环境?
我也试过su user -c
和sudo
。
为了更容易测试,我正在“root”(sudo su
)并运行which bundle
(捆绑是一个红宝石)。
这是我得到的:
sudo -i -u webuser which bundle
# => 没有输出su -l webuser -c which bundle
# => 没有输出sudo su - webuser -c which bundle
# => 没有输出但是 ssh 以网络用户身份登录
which bundle
# => /opt/ruby/bin/bundle