> grep foo -- * > > will still not work because rc's globbing also fears zero and returns the > pattern instead of an empty list if there are no matches.
i used to think that was a misfeature. in college i wrote a shell that elided failed globs in the argument list. the problem is that people assume that failed globs generate an error, e.g. cat «glob pattern» >[2=] || echo cat failed i didn't redesign the system, so that would hang with my shell. if we follow your redesign of unix, we would never get an error because cat * does nothing and wouldn't be an error at all. one would need to write x = * if(~ $#* 0) echo cat failed if not cat $x that seems less attractive to me. - erik