I ran into a strange situation the other day. I was compiling a program that was. At some point, I decided to delete the object files and the core file, and start over, so I gave the command:
rm *.o core
It turns out, for C shell users, that if none of the wildcards can be
expanded, you get a
No match error. It doesn't matter that there's
a perfectly good match for other name(s).
That's because, when csh can't match a wildcard, it aborts and prints an
error - it won't run the command.
If you create one .o file or
*.o from the command line, core will disappear happily.
On the other hand, if the Bourne shell can't match a wildcard, it just passes the unmatched wildcard and other filenames:
to the command (in this case, to rm) and lets the command
decide what to do with it.
So, with Bourne shell, what happens will depend on what your command
does when it sees the literal characters
You can make csh act a lot like sh by using: