Eu acho que quando você usa o sudo, ele cria um novo sub-shell sem todas as variáveis env.
Se bem me lembro, você tem que usar o comando rvmsudo, para que o rvm tenha as variáveis apropriadas.
Eu tenho este comando:
ubuntu@ip-10:~$ sudo su deploy -c 'rvm install 1.9.3'
bash: rvm: command not found
Eu também tentei:
ubuntu@ip-10:~$ sudo su deploy -c 'source /home/deploy/.bashrc && rvm install 1.9.3'
bash: rvm: command not found
O mesmo resultado. Não tenho certeza do que está acontecendo porque, quando faço isso:
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
Tudo funciona muito bem. Mas eu não posso fazer isso porque isso é para um script de shell. Por que não funciona nas duas primeiras instâncias?
Eu acho que quando você usa o sudo, ele cria um novo sub-shell sem todas as variáveis env.
Se bem me lembro, você tem que usar o comando rvmsudo, para que o rvm tenha as variáveis apropriadas.
Parece que você está tentando simplesmente trocar de usuário e executar um comando que implanta alguns arquivos na casa desse usuário.
su deploy -c 'rvm install 1.9.3'
Você não precisa elevar os privilégios com sudo
para executar su
e, se precisar de sudo
para executar rvm , provavelmente poderá fazê-lo com
su deploy -c 'sudo rvm install 1.9.3'
Tags command-line ruby rvm shell ubuntu