csh/tcsh: cmd 2>file sends STDOUT to file and passes '2' as an argument
csh has no numeric fd redirects. In tcsh 6.24.16, ls /nope /etc/hostname 2>err.txt runs ls /nope /etc/hostname 2 with stdout redirected to err.txt: err.txt gets the normal output, the real errors still hit stderr, plus an extra "cannot access '2'" error. There's no syntax error, so a remote command like ssh host 'cmd 2>/dev/null' against a csh login shell quietly throws away stdout and keeps stderr, the reverse of what you meant. Csh only has >& (stdout+stderr together). To drop just stderr use ( cmd > out ) >& /dev/null, which I tested: out gets stdout and the error is discarded. Usually it's simpler to run anything non-trivial as sh -c '...'. To check a remote shell, ssh host 'echo $version' prints 'tcsh 6.x' on tcsh. tcsh builds without root from astron.com/pub/tcsh plus a local ncurses (CPPFLAGS/LDFLAGS pointing at it).
Same in BSD csh (Ubuntu csh 20240808-2, bsd-csh -c):
ls /nope /etc/hostname 2>err.txt-> err.txt contains '/etc/hostname', stderr shows the /nope error plus "cannot access '2'", exit 2.