This question has been asked before and I have read the answers, but they do not seem to work for me.

The simplest answer seems to be to use chsh. Makes sense!

But when I do sudo chsh -s tcsh rolf I get a warning "tcsh does not exist".

Yet if I type which tcsh I get /usr/bin/tcsh and if I type tcsh at the command line I get a tcsh shell.

If I just do sudo chsh rolf I get an interactive result that indicates that tcsh already is my login shell. Nevertheless whenever I log in, I get a bash shell (until I take overt action by typing tcsh).

What can I do to get tcsh as my shell automatically?

(Please don't tell me that I should be using bash and not tcsh; that is not an issue which I am disposed to discuss.)

  • 1
    When you say "login" do you mean via remote connections, local TTY instances, or the gnome-terminal or similar GUI? – Thomas Ward Sep 27 '16 at 23:27
  • 1
    you need to use the full path /usr/bin/tcsh or be in the /usr/bin directory to avoid that warning.... – Elder Geek Sep 28 '16 at 3:12
  • Also make sure that /usr/bin/tcsh appears in /etc/shells. – David Foerster Sep 28 '16 at 8:28

Try sudo chsh -s /usr/bin/tcsh rolf, log off and log on again.

Also make sure that file /etc/shells contains a line /usr/bin/tcsh.

  • That worked perfectly. Thanks. Not exactly intuitive though, is it? :-) – Rolf Turner Sep 28 '16 at 0:24
  • Well, man chsh does mention /etc/shells. Would you consider marking the answer as resolved then? – sмurf Sep 28 '16 at 0:56

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