$ 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
вот ответ.