While reading this I saw this kind of strange command
$ /lib64/ld-linux-x86-64.so.2 ./app
$ LD_DEBUG=all /lib64/ld-linux-x86-64.so.2 ./app
Unexpectedly they really works
What are these? The man pages I can find says that only variable assignments can precede commands. Therefore in the above lines /lib64/ld-linux-x86-64.so.2 should be the command, but they're not. Running /lib64/ld-linux-x86-64.so.2 alone gives an error as expected
The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing.
3.7.1 Simple Command Expansion
A simple command is a sequence of optional variable assignments followed by blank-separated words and redirections, and terminated by a control operator. The first word specifies the command to be executed, and is passed as argument zero. The remaining words are passed as arguments to the invoked command.
SHELL GRAMMAR # Simple Commands