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