Eso depende mucho de la cáscara. Si solo miramos las 4 familias principales de shell (Bourne, csh, rc, fish):
Familia Bourne
Esa es la cáscara de Bourne y todas sus variantes y ksh, bash, ash/ dash, zsh, yash.
var=23: esa es la sintaxis correcta de asignación de variable: una palabra que consiste en letras, dígitos o guiones bajos sin comillas seguidos de una sin comillas =que aparece antes de un argumento de comando (aquí está solo)
var =23, el varcomando con =23como argumento (excepto en zshdonde =somethinges un operador especial que se expande a la ruta del somethingcomando. Aquí, es probable que obtenga un error, ya que 23es poco probable que sea un nombre de comando válido).
var= 23: una tarea var=seguida de un nombre de comando 23. Eso está destinado a ejecutarse 23con var=pasado a su entorno ( varvariable de entorno con un valor vacío).
var = 23, varcomando con =y 23como argumento. Prueba con, echo = 23por ejemplo.
Familia csh
cshy tcsh. Hay asignaciones variables con la set var = valuesintaxis para variables escalares, set var = (a b)para matrices, setenv var valuepara variables de entorno, @ var=1+1para asignación y evaluación aritmética.
Entonces:
var=23solo invoca el var=23comando.
var =23invoca el varcomando con =23como argumento.
var= 23invoca el var=comando con 23como argumento
var = 23invoca el varcomando con =y 23como argumentos.
Familia rc
Eso es rc, esy akanga. En esos shells, las variables son matrices y las asignaciones son con var = (foo bar), var = foosiendo short para var = (foo)(una matriz con un fooelemento) y var =short para var = ()(matriz sin elemento, use var = ''para una matriz con un elemento vacío).
En cualquier caso, los espacios en blanco (espacio o tabulación) alrededor =están permitidos y son opcionales. Entonces, en esos shells, esos 4 comandos son equivalentes y equivalentes var = (23)a asignar una matriz con un elemento 23.
Pescado
En fish, la sintaxis de asignación de variables es set var value1 value2. Como en rc, las variables son matrices.
Por lo tanto, el comportamiento sería el mismo que con csh, excepto que fishno le permitirá ejecutar un comando con un =en su nombre. Si usted tiene un comando tal, es necesario invocar a través de sh, por ejemplo: sh -c 'exec weird===cmd'.
Entonces todo var=23y var= 23le dará un error, var =23llamará al varcomando con =23como argumento y var = 23llamará al varcomando con =y 23como argumentos.