Странный вопрос, я знаю. Вот сценарий:
echo $USER
Вот команда, которую я использую для запуска:
sudo ./myscript.sh
Прямо сейчас это печатает "root", но я хочу, чтобы это напечатало jon
, мое имя пользователя. Есть ли способ сделать это, изменив сценарий, а не команду?
command-line
bash
sudo
environment-variables
Джонатан
источник
источник
Ответы:
Используйте
SUDO_USER
переменную окружения вместоUSER
.sudo
помещает имя пользователя, запустившего его, вSUDO_USER
переменную окружения:Таким образом , вы можете просто заменить
$USER
с$SUDO_USER
в сценарии:Дальнейшее чтение
man sudo
, в разделе «ОКРУЖАЮЩАЯ СРЕДА»:Страница man также описывает некоторые другие связанные переменные окружения,
sudo
которые могут оказаться полезными, такие какSUDO_UID
иSUDO_GID
Получить $ USER внутри сценария оболочки при запуске с sudo?
источник