O comando combinado sudo su deploy não funciona, quando separado

1

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?

    
por Matt Elhotiby 30.07.2012 / 22:47

2 respostas

1

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.

    
por 30.07.2012 / 23:04
0

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'
    
por 31.07.2012 / 14:40