Как экспортировать переменную для использования с sudo?

Начиная с версии 1.10 вы можете использовать "xinerama_head = " в вашем conky.config, чтобы указать конкретный вывод.

Мне пришлось использовать это, чтобы принудительно установить conky на панель моего ноутбука, когда к нему подключен внешний монитор, так как я делаю его своим основным монитором с моим ноутбуком слева. Таким образом, хотя у монитора позиция x +1920, conky отображается на нем без опции xinerama_head.

25
16.01.2017, 20:45
3 ответа

sudo очищает переменные в среде перед вызовом данной команды.Вам нужно будет попросить его сохранить переменные в среде для работы вашей команды.

Кроме того, вам нужно будет экспортировать переменную FMPEG перед использованием sudo ( export FMPEG = yes; sudo ), назначить это аналогично вызову sudo ( FMPEG = yes sudo ) или используйте env ( env FMPEG = yes sudo ).

Чтобы сохранить переменные среды, используйте -E (или - preserve-env ):

$ env FMPEG=yes sudo -E sbopkg -B -i vice

Также можно установить определенные переменные среды следующим образом:

$ sudo FMPEG=yes sbopkg -B -i vice

Если это не удается из-за действующей политики безопасности, вызовите корневую оболочку и установите там переменную:

$ sudo -s
# env FMPEG=yes sbopkg -B -i vice
# exit
13
27.01.2020, 19:40

обратите внимание, что: (export a=b; command) эквивалентно a=b command. Обратите внимание на скобки.

Тогда если мы применим переменную не к sudo, а непосредственно к sbopkg, то вместо FFMPEG=yes sudo sbopkg -B -i vice мы можем сделать sudo FFMPEG=yes sbopkg -B -i vice

Если полиция безопасности препятствует этому, то: sudo bash -c "FFMPEG=yes sbopkg -B -i vice"

(Не используйте -E, это небезопасно, так как будет утечка всевозможных неожиданных переменных.)

8
27.01.2020, 19:40

Вы можете использовать опцию sudo -E:

FMPEG=yes sudo -E sbopkg -B -i vice

Из руководства:

-E, --preserve-env

Указывает политике безопасности, что пользователь желает сохранить существующие переменные окружения. Политика безопасности политика безопасности может вернуть ошибку, если у пользователя нет разрешения на сохранение окружения.

Обратите внимание, что при этом экспортируются все существующие переменные окружения. Безопаснее экспортировать только нужные переменные окружения с помощью следующего синтаксиса:

sudo FMPEG=yes sbopkg -B -i vice

53
27.01.2020, 19:40

Теги

Похожие вопросы