Я пытаюсь запустить приложение, для которого требуется много переключателей, чтобы работать, поэтому у меня есть многоуровневое их использование с помощью оператора \
. Теперь мне нужно запустить это приложение, а также экспортировать некоторый экспорт в качестве другого пользователя.Как запускать многострочные команды bash как sudo
То, что я в настоящее время пытается сделать
sudo -u user bash <<EOF
export AUDIO_DRV=alsa
export ...
exec application --switch1 \
--switch2 \
--switch3 \
--switch4 \
... \
"[email protected]"
EOF
Я бы запустить sudo myscript.sh
так, что корень может настроить несколько вещей, прежде чем он падает привилегии для запуска основного приложения. Проблема заключается в том, что многострочные коммутаторы не все передаются в приложение, что приводит к неожиданным результатам.
Есть ли способ сделать эту работу такой чистой, как это было бы или я застрял, добавив все переключатели в одну строку, чтобы она работала?
«$ @» была именно этой проблемой. Благодаря! Единственная причина, по которой я думал, что это аргументы с несколькими строками, состояла в том, что приложение печатало сообщения о том, что не принимал один из необходимых переключателей для работы или, как я думал. Благодаря! –
@randynewfield Я пропустил '-', который говорит bash, чтобы не интерпретировать их как свои собственные варианты. –
Спасибо. Сейчас все отлично работает. –