Is it bad practice to set root's shell to something other than the default?

Yes. If system fails during booting you can log into root shell. If you have separate /usr some shells can fail to successfully start.

I'd advice to create account toor (uid 0, gid 0) with non-standard shell while left root with default shell.


Should not be an issue.

Shell-script files explicitly encode which shell they are executed with. It is encoded in the first line or other programs or scripts execute a specific shell and give the shell script as argument.

The only program I can think of that uses the user account shell information (besides the login process) is procmail. Really funny if your user has set as shell /bin/false on the mailserver ... But you usually do not execute procmail as root.

Another candidate would be the lines in the crontab of root. I don't know what the policy of crond is which shell to use.


Scripts written for the bourne shell will most of the time run against BASH or ZSH or $foo without any problems.

On many Linux systems is no original sh installed, instead its often a symlink against /bin/bash.

If some scripts just "assume" that the shell is explicitly sh, they should be rewritten. Theres the shebang mechanism to choose which interpreter your script needs. If its the sh, the script should include #!/bin/sh as the first line.

Your default shell setting should not be relevant in this context.