Комбинированная команда 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

Все отлично работает. Но я не могу этого сделать, потому что это для сценария оболочки. Почему это не работает в первых двух случаях?

2 ответа

Я думаю, что когда вы используете sudo, он создает новую вложенную оболочку без всех переменных env.

Если я правильно помню, вы должны использовать команду rvmsudo, чтобы у rvm были правильные переменные.

Похоже, вы пытаетесь просто переключить пользователя и запустить команду, которая развертывает некоторые файлы в его доме.

su deploy -c 'rvm install 1.9.3'

Вам не нужно повышать привилегии с sudo бежать suи если нужно sudo чтобы запустить RVM, то вы, вероятно, можете сделать это с

su deploy -c 'sudo rvm install 1.9.3'
Другие вопросы по тегам