Isso depende muito da concha. Se olharmos apenas para as quatro principais famílias de cascas (Bourne, csh, rc, fish):
Família Bourne
Esse é o shell Bourne e todas as suas variantes e ksh, bash, ash/ dash, zsh, yash.
var=23: essa é a sintaxe correta de atribuição de variável: uma palavra que consiste em letras, dígitos ou sublinhados sem aspas, seguida por uma sem aspas =que aparece antes de um argumento de comando (aqui está por si só)
var =23, o varcomando com =23o argumento as (exceto zshonde =somethingestá um operador especial que se expande para o caminho do somethingcomando. Aqui, é provável que você receba um erro, pois 23é improvável que seja um nome de comando válido).
var= 23: uma atribuição var=seguida por um nome de comando 23. Isso deve ser executado 23com var=passado para seu ambiente ( varvariável de ambiente com um valor vazio).
var = 23, varcomando com =e 23como argumento. Tente com echo = 23por exemplo.
Família Csh
cshe tcsh. Designações de variáveis que existem com a set var = valuesintaxe para variáveis escalares, set var = (a b)para matrizes, setenv var valuepara variáveis de ambiente, @ var=1+1para atribuição e avaliação aritmética.
Então:
var=23está apenas invocando o var=23comando.
var =23está chamando o varcomando com =23como argumento.
var= 23está chamando o var=comando com 23como argumento
var = 23está chamando o varcomando com =e 23como argumentos.
Família rc
Isso é rc, ese akanga. Nessas shells, as variáveis são matrizes e as atribuições são var = (foo bar), com var = fooabreviação de var = (foo)(uma matriz com um fooelemento) e var =abreviação de var = ()(matriz sem elemento, use var = ''para uma matriz com um elemento vazio).
Em qualquer caso, espaços em branco (espaço ou tabulação) ao redor =são permitidos e opcionais. Portanto, nesses shells esses 4 comandos são equivalentes e equivalentes var = (23)a atribuir uma matriz com um elemento 23.
Peixe
Em fish, a sintaxe da atribuição de variável é set var value1 value2. Como em rc, variáveis são matrizes.
Portanto, o comportamento seria o mesmo que com csh, exceto que fishnão permitirá que você execute um comando com a =em seu nome. Se você tem tal comando de um, você precisa chamá-lo através de sh, por exemplo: sh -c 'exec weird===cmd'.
Então, tudo var=23e var= 23lhe dará um erro, var =23chamará o varcomando com =23como argumento e var = 23chamará o varcomando com =e 23como argumentos.