$ SUDO_USER не работает, если вы используете sudo su -.
Также требуется несколько проверок - если $USER == 'root'то получится $SUDO_USER.
Вместо команды whoamiиспользуйте who am i. Это запускает whoкоманду, отфильтрованную для текущего сеанса. Он дает вам больше информации, чем вам нужно. Итак, сделайте это, чтобы получить только пользователя:
who am i | awk '{print $1}'
В качестве альтернативы (и проще) вы можете использовать logname. Он делает то же самое, что и в приведенном выше заявлении.
Это дает вам имя пользователя, вошедшего в сеанс.
Они работают независимо от sudoили sudo su [whatever]. Он также работает независимо от того, сколько раз suи sudoвызывается.
who am iвот ответ.