$ 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
.