In iTerm, why is a command shell's command not picking up things on my $PATH?
Environment variables like PATH and TERM are normally inherited from the shell. When you run the script directly, they are unset.

You can run the script as a child process of a login shell by setting the command to bash -lc "~/.bin/sshb servername".