Dipende molto dalla shell. Se guardiamo solo alle 4 principali famiglie di conchiglie (Bourne, csh, rc, fish):
Famiglia Bourne
Cioè la shell Bourne e tutte le sue varianti e ksh, bash, ash/ dash, zsh, yash.
var=23: questa è la sintassi di assegnazione variabile corretta: una parola che consiste di lettere, cifre o caratteri di sottolineatura seguiti da un non quotato =che appare prima di un argomento di comando (qui è da solo)
var =23, il varcomando con =23come argomento (tranne in zshcui =somethingè presente un operatore speciale che si espande nel percorso del somethingcomando. Qui, è probabile che 23venga visualizzato un errore poiché è improbabile che sia un nome di comando valido).
var= 23: un compito var=seguito da un nome di comando 23. Questo è pensato per essere eseguito 23con var=passato al suo ambiente ( varvariabile d'ambiente con un valore vuoto).
var = 23, varcomando con =e 23come argomento. Prova con echo = 23per esempio.
Famiglia csh
cshe tcsh. Ci sono assegnazioni di variabili con la set var = valuesintassi per variabili scalari, set var = (a b)per array, setenv var valueper variabili di ambiente, @ var=1+1per assegnazione e valutazione aritmetica.
Così:
var=23sta solo invocando il var=23comando.
var =23sta invocando il varcomando con =23come argomento.
var= 23sta invocando il var=comando con 23come argomento
var = 23sta invocando il varcomando con =e 23come argomenti.
Famiglia rc
Questo è rc, ese akanga. In quelle shell, le variabili sono array e le assegnazioni sono var = (foo bar), con var = fooabbreviazione di var = (foo)(un array con un fooelemento) e var =abbreviazione di var = ()(array senza elemento, utilizzare var = ''per un array con un elemento vuoto).
In ogni caso, gli spazi vuoti (spazio o scheda) =sono consentiti e facoltativi. Quindi in quelle shell quei 4 comandi sono equivalenti ed equivalenti var = (23)ad assegnare un array con un solo elemento 23.
Pesce
In fish, la sintassi dell'assegnazione delle variabili è set var value1 value2. Come in rc, le variabili sono array.
Quindi il comportamento sarebbe lo stesso di csh, tranne per il fatto che fishnon ti permetterà di eseguire un comando con a =nel suo nome. Se si dispone di tale comando di una, è necessario richiamare tramite sh, per esempio: sh -c 'exec weird===cmd'.
Quindi tutto var=23e var= 23ti darà un errore, var =23chiamerà il varcomando con =23come argomento e var = 23chiamerà il varcomando con =e 23come argomenti.