$ getent passwd "${username}" | awk -F: '$0=$7'
Se o usuário existir tanto localmente quanto por exemplo no LDAP, isso retornará várias entradas, portanto, você precisará decidir se uma linha será retornada.
Como faço para obter o shell de login padrão de um usuário específico no linux? O usuário não está necessariamente em /etc/passwd
. Eles podem estar fazendo login com NIS ou LDAP ou outro método de pam.