Могу ли я получить доступ к исходной переменной $ USER из сценария, запускаемого с помощью 'sudo'?

18

Странный вопрос, я знаю. Вот сценарий:

echo $USER

Вот команда, которую я использую для ее запуска:

sudo ./myscript.sh

Сейчас он печатает «root», но я хочу, чтобы он печатал jon , мое имя пользователя. Есть ли способ сделать это, изменив скрипт, а не команду?     

задан Jon 31.12.2016 в 19:08
источник

1 ответ

26

Используйте переменную окружения SUDO_USER вместо USER .

sudo помещает имя пользователя, который запустил его в переменной среды SUDO_USER :

[email protected]:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
[email protected]:~$ sudo sh -c 'echo $SUDO_USER'
ek

Итак, вы можете просто заменить $USER $SUDO_USER в вашем скрипте:

echo $SUDO_USER

Дополнительная литература

ответ дан Eliah Kagan 31.12.2016 в 19:23
источник