Solution 1 :
J'ai demandé à ce sujet dans le canal #suse sur Freenode, et Miuku a suggéré la même chose qu'Arul, cependant, il a mentionné deux choses, si j'utilisais un domaine Windows, je pourrais définir l'attribut loginShell.
Malheureusement, je suis sur un domaine samba, donc cela n'a pas aidé. Mais sa dernière suggestion était parfaite, obtenez la sortie de :
getent passwd USERNAME
Cela aura l'équivalent d'entrée valide pour votre utilisateur dans /etc/passwd, prenez ceci, collez-le dans /etc/passwd et mettez à jour le shell à la fin pour le chemin valide du shell que vous souhaitez utiliser. De cette façon, cela ne le change pas pour tous les utilisateurs, et vous pouvez vous assurer que le shell est sur la machine sur laquelle vous le configurez avant d'effectuer le changement.
Solution 2 :
J'ai eu exactement le même problème. Étant donné que toutes les machines de mon domaine n'ont pas installé zsh et que je ne voulais pas affecter tous les utilisateurs, j'ai fini par mettre mon .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
C'est peut-être inélégant, mais au moins ça fait le travail.
Solution 3 :
Si vous avez accès à la modification de la configuration du contrôleur de domaine samba, vous pouvez définir la propriété suivante qui vous permet de définir le shell dans smb.conf
template shell = /bin/zsh
Je ne sais pas ce qui se passe si vous vous connectez à une machine sur laquelle zsh n'est pas installé (toutes les distributions n'ont pas zsh installé par défaut), mais je suppose qu'il invoquera le shell par défaut de la distribution.
Si vous voulez simplement l'essayer, tapez simplement zsh pour obtenir un sous-shell que vous connaissez déjà, je suis sûr.