Das hängt sehr von der Schale ab. Wenn wir uns nur die 4 Hauptschalenfamilien (Bourne, csh, rc, fish) ansehen:
Bourne Familie
Das ist die Bourne - Shell und alle seine Varianten und ksh, bash, ash/ dash, zsh, yash.
var=23: das ist die korrekte Syntax für die Variablenzuweisung: ein Wort, das aus nicht zitierten Buchstaben, Ziffern oder Unterstrichen besteht, gefolgt von einem nicht zitierten Wort, =das vor einem Befehlsargument steht (hier ist es für sich allein)
var =23, der varBefehl mit =23dem Argument as (außer zshwenn =somethinges sich um einen speziellen Operator handelt, der auf den Pfad des somethingBefehls erweitert wird. Hier wird wahrscheinlich ein Fehler angezeigt, da 23es sich wahrscheinlich nicht um einen gültigen Befehlsnamen handelt).
var= 23: eine Zuweisung, var=gefolgt von einem Befehlsnamen 23. Das soll 23mit var=übergeben an seine Umgebung ( varUmgebungsvariable mit einem leeren Wert) ausgeführt werden.
var = 23, varGebiete mit =und 23als Argument. Versuchen Sie es echo = 23zum Beispiel mit.
Csh Familie
cshund tcsh. Variablenzuweisungen gibt es mit der set var = valueSyntax für skalare Variablen, set var = (a b)für Arrays, setenv var valuefür Umgebungsvariablen, @ var=1+1für Zuweisungen und für die arithmetische Auswertung.
So:
var=23ruft nur den var=23Befehl auf.
var =23ruft den varBefehl mit =23als Argument auf.
var= 23ruft den var=Befehl mit 23als Argument auf
var = 23ruft den varBefehl mit =und 23als Argumente auf.
RC Familie
Das ist rc, esund akanga. In diesen Shells sind Variablen Arrays und Zuweisungen sind mit var = (foo bar), wobei var = foosie kurz für var = (foo)(ein Array mit einem fooElement) und var =kurz für var = ()(Array ohne Element, Verwendung var = ''für ein Array mit einem leeren Element) sind.
In jedem Fall sind Leerzeichen (Leerzeichen oder Tabulatoren) =zulässig und optional. In diesen Shells sind diese 4 Befehle äquivalent und äquivalent var = (23), um ein Array mit einem Element zuzuweisen 23.
Fisch
In fishist die Variablenzuweisungssyntax set var value1 value2. rcVariablen sind wie in Arrays.
Das Verhalten ist also dasselbe wie bei csh, mit der Ausnahme, dass fishSie keinen Befehl mit einem =im Namen ausführen können . Wenn Sie ein solcher Befehl haben, müssen Sie es über aufrufen shzum Beispiel: sh -c 'exec weird===cmd'.
Also alle var=23und var= 23geben Ihnen einen Fehler, var =23rufen den varBefehl mit =23als Argument auf und var = 23rufen den varBefehl mit =und 23als Argument auf.