Auf UNIX-ähnlichen Systemen shtrennt die Shell das, was Sie eingeben, in Wörter und übergibt jedes Wort separat als Argument an das Programm oder den eingebauten Befehl, auf den das erste Wort verweist (der Befehlsname selbst ist das nullte Argument). Vereinfacht gesagt, werden Wörter auf jedem Feld aufgeteilt. Somit,
cd ..
ist zwei wörter aber
cd..
ist nur eine. Unter cd..UNIX gibt es keinen benannten Befehl , daher schlägt letzterer fehl. Ersterer ruft cdmit dem einzigen Argument auf ..und ändert ein Verzeichnis nach oben. Für ein komplizierteres Beispiel
echo foo bar baz quux
wird in die vier Wörter geparst echo, foo, bar, baz, und quuxdie dann zu dem übergebenen echoBefehl als Argumente. Die Menge an Whitespace dazwischen geht verloren und echowird gedruckt
foo bar baz quux
da es immer ein einzelnes Leerzeichen zwischen jedem Argument einfügt.
Unter Windows, DOS und CP / M COMMAND.COManalysiert die Shell den Befehlsnamen als das längste Präfix dessen, was Sie eingegeben haben, bis ein Leerzeichen oder eine Interpunktion erreicht ist (dies ist ebenfalls eine Vereinfachung). Dann wird der Befehl mit der gesamten Zeile ausgeführt, die Sie als Argument eingegeben haben. Ein Zeiger zeigt an, wo der Befehlsinterpreter glaubt, dass der Befehlsname beendet ist. COMMAND.COMteilt die Kommandozeile nicht in Argumente auf, wenn das Programm dies wünscht, muss es dies selbst tun.
Zum Beispiel cd ..entscheidet in der Shell, dass dies cdder Befehlsname ist, der zufällig ein eingebauter Befehl ist. Der eingebaute Befehl wird mit dem Argument string ausgeführt cd ..und der Information, dass die ersten beiden Zeichen den Befehlsnamen bilden. In ähnlicher Weise cd..entscheidet die Shell, dass dies cdder Befehlsname ist und ..als Operandenname übergeben wird. Der cdBefehl überspringt den Befehlsnamen, entfernt den Rest aus dem Leerraum und versucht dann, in das angegebene Verzeichnis zu wechseln.
Ähnlich für,
echo foo bar baz quux
Die Shell ruft den echoBefehl mit echo foo bar baz quuxden Argumenten auf und gibt ihn echoordnungsgemäß aus
foo bar baz quux
Dies ist der Grund, warum es cd..unter DOS, aber nicht unter UNIX funktioniert.
Beide Entwürfe haben ihre Vor- und Nachteile, obwohl der UNIX-Stil fast alle Systeme übernommen hat, da es viel einfacher ist, sie zu programmieren, da nur ein Programm (die Shell) wissen muss, wie man eine Befehlszeile in Wörter aufteilt, im Gegensatz zu jedem anderen Programm mit seiner eigenen hausgemachten Lösung.