组合 sudo su deploy 命令不起作用,单独使用时有效

组合 sudo su deploy 命令不起作用,单独使用时有效

我有这个命令:

ubuntu@ip-10:~$ sudo su deploy -c 'rvm install 1.9.3' 
bash: rvm: command not found

我也尝试过:

ubuntu@ip-10:~$ sudo su deploy -c 'source /home/deploy/.bashrc && rvm install 1.9.3' 
bash: rvm: command not found

结果相同。不确定发生了什么,因为当我这样做时:

sudo su deploy
deploy@ip-10-101-6-147:/home/ubuntu$ rvm install 1.9.3
Fetching yaml-0.1.4.tar.gz to /home/deploy/.rvm/archives

一切都很顺利。但我做不到,因为这是一个 shell 脚本。为什么前两个实例不起作用?

答案1

我认为当您使用 sudo 时,它会创建一个不包含所有环境变量的新子 shell。

如果我没记错的话,您必须使用命令 rvmsudo,以便 rvm 具有适当的变量。

答案2

似乎您只是试图切换用户并运行一个命令,将一些文件部署到该用户的家中。

su deploy -c 'rvm install 1.9.3'

您不需要提升权限来sudo运行su,如果您需要sudo运行虚拟机那么你也许可以这样做

su deploy -c 'sudo rvm install 1.9.3'

相关内容