sh
é apenas um executável padrão, que é sempre um shell específico. Não há mágica para detectar qual shell usar.
% whereis sh
sh: /bin/sh
% ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash
Nos sistemas Ubuntu, /bin/sh
é (por padrão) um link simbólico para o traço , que é um shell POSIX mínimo destinado ao uso não interativo. Se você executar sh cshtestscript
em um sistema Ubuntu, ele tentará executar o script com traço.
A maneira correta de lidar com isso é adicionar um shebang ao script que indica a qual shell use, torne o script executável e sempre execute-o como ./cshtestscript
.
#!/bin/csh