Cela dépend beaucoup de la coque. Si nous ne regardons que les 4 principales familles de coquilles (Bourne, csh, rc, fish):
Famille Bourne
C'est le shell Bourne et toutes ses variantes et ksh, bash, ash/ dash, zsh, yash.
var=23: c'est la syntaxe d'attribution de variable correcte: un mot qui se compose de lettres, de chiffres ou de soulignements non entre guillemets suivi d'un non guillemet =qui apparaît avant un argument de commande (ici, il est seul)
var =23, la varcommande avec =23comme argument (sauf dans le zshcas où se =somethingtrouve un opérateur spécial qui se développe sur le chemin de la somethingcommande. Ici, vous obtiendrez probablement une erreur car il 23est peu probable qu'il s'agisse d'un nom de commande valide).
var= 23: une affectation var=suivie d'un nom de commande 23. Cela est censé s'exécuter 23avec var=passé à son environnement ( varvariable d'environnement avec une valeur vide).
var = 23, varcommande avec =et 23comme argument. Essayez avec echo = 23par exemple.
Famille Csh
cshet tcsh. Les affectations de variables existent avec la set var = valuesyntaxe des variables scalaires, set var = (a b)des tableaux, setenv var valuedes variables d'environnement, @ var=1+1des affectations et de l'évaluation arithmétique.
Donc:
var=23appelle simplement la var=23commande.
var =23appelle la varcommande avec =23comme argument.
var= 23appelle la var=commande avec 23comme argument
var = 23appelle la varcommande avec =et 23comme arguments.
Famille RC
C'est rc, eset akanga. Dans ces shells, les variables sont des tableaux et les affectations sont avec var = (foo bar), avec var = fooétant court pour var = (foo)(un tableau avec un fooélément) et var =court pour var = ()(tableau sans élément, utilisez var = ''pour un tableau avec un élément vide).
Dans tous les cas, les espaces (espace ou tabulation) autour =sont autorisés et facultatifs. Donc, dans ces shells, ces 4 commandes sont équivalentes et équivalentes var = (23)à affecter un tableau avec un élément 23.
Poisson
Dans fish, la syntaxe d'affectation des variables est set var value1 value2. Comme dans rc, les variables sont des tableaux.
Le comportement serait donc le même qu'avec csh, sauf que fishcela ne vous permettra pas d'exécuter une commande avec un =dans son nom. Si vous avez une telle commande, vous devez l' appeler via shpar exemple: sh -c 'exec weird===cmd'.
Donc tout var=23et var= 23vous donnera une erreur, var =23appellera la varcommande avec =23comme argument et var = 23appellera la varcommande avec =et 23comme arguments.