Zsh c'est de la zouille

Quelqu'un peut me dire pourquoi ceci fonctionne

matts@Leia:~/tmp% var="ls"
matts@Leia:~/tmp% $var
test

alors que ceci ne fonctionne pas ?

matts@Leia:~/tmp% var="ls -l"
matts@Leia:~/tmp% $var
zsh: command not found: ls -l

Alors qu'avec Bash, les deux exemples marchent ?

la zouille c'est merveilleux

c'est l'une des grandes différences métaphysiques avec les shells old school: lorsqu'une variable n'est pas quotée, son expansion n'est pas word splittée (IFS). Le word splitting existait pour avoir un comportement type tableau alors que tout n'est que chaine dans le shell classique. zsh a des tableaux et des tableaux associatifs et ne fait donc pas, par defaut, les bricolages casse-gueule! C'est pour ca que zsh ne s'écrase pas comme une merde lorsqu'il y a des espaces dans les noms de fichier par exemple. Tu peux forcer word splitting en utilisant le modifier =

> x='ls -l zle'
mc@hyperion:/home/mc
> $x
zsh: command not found: ls -l zle
mc@hyperion:/home/mc
> $=x
-rw------- 1 mc mc 6358 2008-01-04 14:15 zle

de plus, je pense qu'un setopt doit pouvoir régler ce comportement ( au pire: utiliser emulate sh ;) )

>Ever heard of .cshrc?
That's a city in Bosnia. Right?

>Ever heard of .cshrc?
That's a city in Bosnia. Right?

Ok, merci. Je vois l'idée,

Ok, merci. Je vois l'idée, même si je ne trouve pas ça très naturel, comme comportement...

RTFFAQ :)

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.
  • You can use BBCode tags in the text.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

Plus d'informations sur les options de formatage