1

У меня есть эта команда:

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 ответа2

1

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

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

0

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

su deploy -c 'rvm install 1.9.3'

Вам не нужно повышать привилегии с помощью sudo для запуска su , а если вам нужен sudo для запуска rvm, то вы, вероятно, можете сделать это с помощью

su deploy -c 'sudo rvm install 1.9.3'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .