$ SUDO_USER não funciona se você estiver usando sudo su -.
Também requer várias verificações - se, $USER == 'root'então, obter $SUDO_USER.
Em vez do whoamiuso do comando who am i. Isso executa o whocomando filtrado para a sessão atual. Fornece mais informações do que você precisa. Então, faça isso para obter apenas o usuário:
who am i | awk '{print $1}'
Alternativamente (e mais simples) você pode usar logname. Ele faz a mesma coisa que a declaração acima.
Isso fornece o nome de usuário que efetuou login na sessão.
Estes funcionam independentemente de sudoou sudo su [whatever]. Ele também funciona independentemente de quantas vezes sue sudosão chamados.
who am ié a resposta aqui.