Soluzione 1:
Ho chiesto informazioni su questo nel canale #suse su Freenode e Miuku ha suggerito lo stesso di Arul, tuttavia, ha menzionato due cose, se stavo usando un dominio Windows potevo impostare l'attributo loginShell.
Purtroppo, sono su un dominio samba, quindi non ha aiutato. Ma il suo suggerimento finale era perfetto, ottieni l'output di:
getent passwd USERNAME
Questo avrà la voce valida equivalente per il tuo utente in /etc/passwd, prendi questo, incollalo in /etc/passwd e aggiorna la shell alla fine per il percorso valido della shell che vuoi usare. In questo modo non lo cambia per tutti gli utenti e puoi assicurarti che la shell sia sul computer su cui lo stai configurando prima di apportare la modifica.
Soluzione 2:
Ho avuto esattamente lo stesso problema. Poiché non tutte le macchine nel mio dominio hanno zsh installato e poiché non volevo influenzare tutti gli utenti, ho finito per inserire il mio .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
Questo potrebbe essere poco elegante, ma almeno fa il suo lavoro.
Soluzione 3:
Se hai accesso per modificare la configurazione del controller di dominio samba, puoi impostare la seguente proprietà che ti consente di impostare la shell in smb.conf
template shell = /bin/zsh
Non sono sicuro di cosa succede se accedi a una macchina che non ha zsh installato (non tutte le distribuzioni hanno zsh installato per impostazione predefinita), ma la mia ipotesi è che invocherà la shell predefinita della distro.
Se vuoi semplicemente provarlo, digita semplicemente zsh per ottenere una subshell che sono sicuro che già conosci.