@steeldriver 的回答在 bash 脚本中,如何使用 su 从 root 用户更改为另一个用户,然后退出?在 bash 脚本中使用 sudo 和 su 效果很好,但新的问题与 .profile 文件中的 Rails 路径有关。
我正在运行 Mastodon,并尝试使用 shell 脚本运行所有不同的 Rails 命令并在更改文件后重新启动 mastodon。在脚本之外手动运行所有命令可以正常工作。
但是在脚本中,三个 Rails 命令都抛出了错误bundle: command not found
,即使其余的 shell 脚本运行并完成了:
#!/bin/bash
sudo su -l mastodon -c '
cd live
RAILS_ENV=production bundle exec rake tmp:cache:clear
RAILS_ENV=production bundle exec rails assets:generate_static_pages
RAILS_ENV=production bundle exec rails assets:precompile
exit
'
systemctl restart mastodon-*
我已将其添加export RAILS_ENV=production
到 ~/.profile 但没有成功。
为执行命令,Rails 的正确导出路径是什么?
这可能与此有关:“Mastodon 默认设置不合理使用,mastodon 不是登录用户”https://github.com/NixOS/nixpkgs/issues/199029
或者这是另一个问题?
〜/.profile:
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
mesg n 2> /dev/null || true
export RAILS_ENV=production