Чи можу я отримати доступ до вихідної змінної $ USER з сценарію, запущеного із `sudo`?


19

Дивне питання, я знаю. Ось сценарій:

echo $USER

Ось команда, яку я використовую для її виконання:

sudo ./myscript.sh

Зараз він друкує "root", але я хочу, щоб він надрукував jonмоє ім'я користувача. Чи є спосіб це зробити, змінивши сценарій, а не команду?


Так, є способи це зробити. Але, можливо, найпростіший спосіб - це обробка. Зателефонуйте до цього сценарію з іншого сценарію, де ви "збережіть" свій ідентифікатор користувача, щоб "скрипт sudo" отримав доступ до нього.
sudodus

Відповіді:


28

Використовуйте 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

Подальше читання

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.