Возможные решения могли быть:
Запуск интерактивной сессии.
sudo -s <<< "cd dir ; command"
или
sudo /bin/bash -c "cd dir ; command"
Но у меня нет/bin/bash/bin/sh/bin/su или других sudoer полномочий
Каталог Changing прежде sudo сделан.
cd dir ; sudo command
Но у меня нет разрешения ввести dir.
Мне нужен общий случай pwd набор (как Popen cwd), таким образом, ниже не ответ, я могу использовать:
sudo command /path/to/file
То, что я пытаюсь записать, является Python обертка Popen с sudo=True/False опцией, и в настоящее время я пытаюсь так или иначе заставить cwd параметр работать.
Я не уверен, каково большее изображение, но Ваш подход должен быть должен выполнить команду с на файл в каталоге. Например, если Вы хотите работать grep regex file
, где file
находится в /root
, тогда необходимо приблизиться к нему как это:
$ sudo grep regex /root/file
И не :
$ sudo 'cd /root; grep regex file'
sudo: cd /root; grep regex file: command not found
, Почему этот вывод? Ну, это - синтаксис оболочки, и sudo не выполняет команду в другой интерактивной оболочке.
Другой подход должен был бы изменить переменную среды PWD
, как это:
$ sudo -i PWD=/root grep regex file
Для меня комбинация sudo
и screen
разработанный:
sudo -iu vagrant screen -mS npm_install bash -c 'cd /vagrant && npm install'
Эта команда сначала переключается на vagrant
пользователь. Затем как vagrant
изменения каталог к /vagrant
и выполняется npm install
.