newgrp
inicia um subshell com o grupo especificado. Assim, essa linha no seu script não terminará até que a subcamada esteja concluída.
A manipulação de newgrp
também é diferente se você estiver usando bash
ou ksh
. ksh
implementa como um comando interno equivalente a exec /usr/bin/newgrp [group]
. Então, como exec
, newgrp
nunca retorna. (Veja alguma documentação aqui .
Se você quiser que ele retorne e queira executar comandos nesse subshell com identidade de grupo alterada, você poderá usar o redirecionamento.
Por exemplo:
#!/bin/ksh
echo "Before newgrp"
/usr/bin/newgrp users <<EONG
echo "hello from within newgrp"
id
EONG
echo "After newgrp"
Aviso: /usr/bin/newgrp
é chamado explicitamente para evitar o implícito exec
de ksh
. O último comando nesse script será executado dentro do shell original, com a identidade do grupo original.