A user account has it's shell defined in passwd file as bash. I would like to change this user account's shell to tcsh for non-interactive jobs (like ssh ), but keep interactive shell to bash. Is there any way to configure this on the system?
If you want login shells to use one shell, but non-login shells to use another, you can achieve this by defining the default shell for the user (in /etc/passwd) as the one that is to be used as the non-login shell (tcsh in your case), then switching to a different shell when a login shell is opened.
In your case this can be acomplished by adding this to the file named ".profile" in the users home-directory (creating it if it doesn't exist yet):
# Switch to bash for login shells if [ ! -n "$BASH_VERSION" ] then exec /bin/bash -l fi