I don't buy it, but I can understand the reasoning.
I don't buy it, but I can understand the reasoning.
The execute bit comparison is especially specious. If I try to execute a non-executable file, it fails. It doesn't go look for an executable file with the same name. Same as if I try to invoke 0 in Clojure. e.g. (0)
He's right that the symbol resolution of the first entry has different rules but ignores the fact that the shell isn't very good at higher order commands. Which is probably okay for a shell but not much use for a modern programming language.
Finally, he's right that multiple namespaces are a good idea, but that's Accepted Truth these days. It's just that we think namespacing should be under the control of the dev, not dependent on the type of the variable.
Uh, no you cant:
$ ls ls
ls: cannot access ls: No such file or directory
$ cat cat
cat: cat: No such file or directory $ ls $(which ls)
$ cat $(which cat) ls /bin/ls
you can simply cat cat or ls ls by cd-ing to /bin first... with the caveat that some distros have moved them to /usr/bin or somewhere, hence the 'which'