So come * viene interpretato in comandi come ls Per esempio. Ma quando si tenta di eseguire * come comando, la shell tenta di eseguire il primo file o directory nella directory di lavoro. Perchè è questo? Come fa la shell a capire * ?
Risposta accettata:
A differenza di altri sistemi operativi, in Unix è la shell che espande i caratteri jolly del nome file. Espande prima le espansioni dei parametri e i glob, quindi usa la (ora) prima parola come nome per l'esecuzione del comando.
Questo è anche il motivo per cui i file denominati con un trattino iniziale possono essere problematici:un glob come * si espanderà ai nomi dei file e un nome che inizia con un trattino può essere preso come opzione. (L'esempio spaventoso è che un file chiamato -r nella directory di lavoro renderebbe rm * rimuovi tutto in modo ricorsivo...)
Di solito non si usa * come primo elemento su qualsiasi riga di comando, tuttavia, è probabile che il fatto che il primo file determini il comando da eseguire in quel caso non causi problemi.