Handle users with bad shells in cmd state

Users may have an odd shell: for example /bin/false is often used for
system accounts. Currently the su call used by cmd to determine a users
environment fails on those accounts. This pull request fixes that
by explicitly asking su to use a known working shell.