I'm new to Linux and using Debian 7. I was using bash, but tried out zsh by using chsh. Initially probably entered a bad shell name but eventually switched to zsh successfully.

Now I switched back to bash but can't access root

When I hit su and the password it returns "Cannot execute zsh: No such file or diretory", while apparently I'm using bash.

Additionally, when I changed back to zsh it still said the same, "can't execute zsh ..."

Can someone help please?



  • Have you tried creating a new shell? Close your terminal program and reopen it. You could alternatively just type 'bash'.
    – spuder
    Aug 22, 2013 at 1:54
  • If you mean using another shell other than bash or zsh then I haven't, but will give it a go and let you know. Thanks! By the way I'm using the GNOME terminal.
    – violeaf
    Aug 22, 2013 at 6:49
  • Did you chsh to zsh for both your non-root account as well as the root account and later uninstalled zsh? It sounds like your root account still uses zsh and that you only switched your non-root account back to bash. Aug 22, 2013 at 6:52
  • You might have chsh'd your root shell to just zsh (without path) instead of /bin/zsh (but chsh should have warned you about that) in which case it cannot find the shell. Aug 22, 2013 at 6:55
  • Adrian I think this may well be the case. How can I now chsh the root shell back? Tried Tommi's suggestion but didn't work. Any idea?
    – violeaf
    Aug 22, 2013 at 19:13

3 Answers 3


This is why you want to always stay logged in in a second terminal while you muck with your login settings.

As for recovery after locking yourself out: Since you have physical access just boot from a live cd, then mount the system partition on your disk, and edit /etc/passwd manually. Or reboot, go to the grub prompt, and add init=/bin/sh to your kernel command line.

  • Thanks @vbraun, before everything I had to navigate to /bin before I was able to get root access under zch. Then instead of using a live cd I sudo'd gedit the passwd and changed the shell value to /bin/bash wherever it appears, now it seems to work. Thanks again for all your help
    – violeaf
    Aug 22, 2013 at 23:59

su -s /bin/sh -c chsh root

And this time make sure you provide full path.

  • Tommi I typed this in and my password, but got 'Cannot execute zsh'
    – violeaf
    Aug 22, 2013 at 19:09
  • 1
    simply doesn't work, this is stupid.
    – mpgn
    Jan 23, 2014 at 23:32
  • Care to elaborate why you think it's stupid? If he had /bin/zsh listed in /etc/shells (which I'm assuming is the case here), then the -s will work with su. I even made sure it works by first switching my root (who uses /bin/zsh by default) to use /bin/bash. Then I moved /bin/bash to /bin/bash.disabled. Failed to login as root as described here. Ran the exact above command I posted and was able to change shell back to my default inspite of what root had for him in /etc/passwd. Feb 5, 2014 at 9:45

type $ sudo bash it ask for password enter password then type

cd /etc (press enter)

type # nano passwd press enter thn change ur passwd file (replace zsh wit sh)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.