It is listed as "ambiguous redirection".
You can get around that putting the initial redirection in parenthises:
Code:
(find / -name foo -print >/dev/tty) >&/dev/null
The reason this works is that the command "(...) >&/dev/null" redirects both stdout and stderr to /dev/null.
The enclosed command "find / -name foo -print >/dev/tty" then redirects stdout to /dev/tty. The evaluation on the command is from outer grouping () to inner, so the >& is evaluated before the inner command - thus disambiguating the > and the >&.
In my opinion, it is a stupid parser that doesn't tokenize > differently from the >& symbols. But this happens due to a single character token handling - thus when it sees ">" it uses the next character to identify whether it is stdout, or both stdout and stderr. When it sees a following ">&" it does detect that stdout has already been redirected... thus causing an "ambigeous" redirection since ">&" calls for both stdout and stderr to be redirected.
This situation could STILL be handled - if it allowed the ">&" token to appear first (redirecting both stdout and stderr), then allow for redirecting stdout.
This is the same problem that csh has (which is where tcsh is derived).