Solución 1:
Pregunté sobre esto en el canal #suse en Freenode, y Miuku sugirió lo mismo que Arul, sin embargo, mencionó dos cosas, si estuviera usando un dominio de Windows, podría configurar el atributo loginShell.
Lamentablemente, estoy en un dominio de samba, así que eso no ayudó. Pero su sugerencia final fue perfecta, obtén el resultado de:
getent passwd USERNAME
Esto tendrá la entrada válida equivalente para su usuario en /etc/passwd, tome esto, péguelo en /etc/passwd y actualice el shell al final para la ruta válida del shell que desea usar. De esta manera, no lo cambia para todos los usuarios, y puede asegurarse de que el shell esté en la máquina en la que está configurando esto antes de realizar el cambio.
Solución 2:
Tuve exactamente el mismo problema. Como no todas las máquinas en mi dominio tienen zsh instalado, y como no quería afectar a todos los usuarios, terminé poniendo mi .bashrc:
if [ -x /usr/bin/zsh ]; then
echo 'starting zsh'
# export SHELL=/bin/zsh #edit: this is probably not what you want, see the comment.
exec /usr/bin/zsh
fi
Esto puede ser poco elegante, pero al menos hace el trabajo.
Solución 3:
Si tiene acceso para editar la configuración del controlador de dominio de samba, puede configurar la siguiente propiedad que le permite configurar el shell en smb.conf
template shell = /bin/zsh
No estoy seguro de lo que sucede si inicia sesión en una máquina que no tiene zsh instalado (no todas las distribuciones tienen zsh instalado de manera predeterminada), pero supongo que invocará el shell predeterminado de la distribución.
Si simplemente quiere probarlo, escriba zsh para obtener una subcapa que estoy seguro de que ya conoce.