В следующем примере сценария не удалось получить среду рабочего стола (DE) при выполнении с помощью sudo. Как получить DE с помощью bash-скрипта, выполняемого с помощью sudo?
#!/bin/bash
echo $DESKTOP_SESSION
echo $XDG_SESSION_DESKTOP
echo $XDG_CURRENT_DESKTOP
echo $SESSION
echo $MDMSESSION
echo $GDMSESSION
Протестировано на Xubuntu и Mate, результаты пусты.
user:~$ sudo bash '/path/sample.sh'
user:~$ bash '/path/sample.sh'
mate
mate
MATE
mate
user:~$
Вам необходимо передать опцию -E
в sudo
:
-E, --preserve-env
Указывает на политику безопасности что пользователь хочет сохранить свои существующие переменные среды. Политика безопасности может возвращать ошибку, если у пользователя нет разрешения на сохранение среды.
blockquote>- см.
man sudo
(или онлайн ).И запустите свой скрипт как
sudo -E '/path/sample.sh'