Você pode verificar a variável SUDO_USER para determinar se o script está sendo executado via sudo e, em caso afirmativo, qual usuário o executou. Então você só usaria isso em gpasswd :
gpasswd -a "${SUDO_USER}" docker
ou
gpasswd -a "${SUDO_USER-$USER}" docker
se você quiser voltar para USER na ausência de SUDO_USER .
O comando que faz com que você acabe logado como root (estritamente falando, isso não altera seu login, ele executa um novo shell) é
newgrp docker
Para corrigir isso, ou seja, acaba sendo você mesmo com docker como seu grupo principal, você precisa executar isso como você mesmo; assumindo sudo ,
su "${SUDO_USER}" -c "newgrp docker"
fará isso.
Observe que terminar seu script com newgrp significa que seu script não termina assim quando você recebe um novo prompt. o resultado é
- o shell em que você está quando digita
sudo ./myscript.sh-
%código%
- o shell executando
sudo-
%código%
- o shell começou com
myscript.shcomo o grupo principal
- o shell começou com
-
%código%
- o shell executando
-
%código%
O script só sairá quando você sair do shell iniciado por newgrp .