Vím, jak * je interpretován v příkazech jako ls například. Ale při pokusu o spuštění * jako příkaz se shell pokusí spustit první soubor nebo adresář ve vašem pracovním adresáři. Proč je to? Jak shell rozumí * ?
Přijatá odpověď:
Na rozdíl od některých jiných operačních systémů, v Unixech je to shell, který rozšiřuje zástupné znaky názvu souboru. Nejprve rozbalí rozšíření parametrů a globy a poté použije (nyní) první slovo jako název pro spuštění příkazu.
To je také důvod, proč soubory pojmenované s úvodní pomlčkou mohou být problematické:globus jako * se rozbalí na názvy souborů a název začínající pomlčkou může být použit jako možnost. (Děsivý příklad je, že soubor s názvem -r v pracovním adresáři by bylo rm * odstranit vše rekurzivně…)
Obvykle se nepoužije * jako první položku na libovolném příkazovém řádku, takže pokud první soubor určí, který příkaz se má v takovém případě spustit, pravděpodobně nezpůsobí problémy.