Странный вопрос, я знаю. Вот сценарий:
echo $USER
Вот команда, которую я использую для выполнения его:
sudo ./myscript.sh
Прямо сейчас это печатает "корень", но я хочу, чтобы это распечатало jon
, мое имя пользователя. Существует ли способ сделать это путем изменения сценария а не команды?
SUDO_USER
переменная среды вместо USER
.sudo
помещает имя пользователя, который выполнил его в SUDO_USER
переменная среды:
ek@Io:~$ sudo sh -c 'echo $USER'
[sudo] password for ek:
root
ek@Io:~$ sudo sh -c 'echo $SUDO_USER'
ek
Таким образом, можно просто заменить $USER
с $SUDO_USER
в Вашем сценарии:
echo $SUDO_USER
man sudo
, в разделе по "СРЕДЕ":
SUDO_USER Set to the login name of the user who invoked sudo.
Страница справочника также описывает некоторые другие связанные переменные среды, определенные sudo
это может пригодиться, такой как SUDO_UID
и SUDO_GID