我有这个命令:
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'