getent passwd $account >'/bin/bash' 2>&1 && ret=true
A linha acima está tentando sobrescrever /bin/bash
. Você não quer fazer isso. Para testar a presença de /bin/bash
na linha retornada por getent
, use:
getent passwd "$account" | grep -q '/bin/bash' && ret=true
Isso funcionará porque grep
define um código de saída de acordo com a localização do texto.
Existem, no entanto, muitos shells diferentes que os usuários podem usar. Estes podem incluir csh
, ksh
e zsh
. Quando o acesso ao shell está desativado, o shell é geralmente configurado para /bin/false
. Se isso for verdade em seu sistema, considere o teste:
getent passwd "$account" | grep -q '/bin/false' || ret=true