Em relação ao método 2, é mais fácil usar uma função. Por exemplo:
#!/bin/bash
func(){
echo "Username: $USER"
echo " EUID: $EUID"
}
export -f func
func
su "$SUDO_USER" -c 'func'
$SUDO_USER
é o nome de usuário do sudo. Você também pode usar $(logname)
em seu lugar.
Em execução na minha máquina:
$ sudo bash test.sh
[sudo] password for wja:
Username: root
EUID: 0
Username: wja
EUID: 1000