Variáveis ​​Zsh, Ruby – de alguma forma, ARGV contém número errado de elementos

Achei coisas estranhas em Ruby e Zsh – essas duas ferramentas não funcionam bem juntas. Eu uso:

  • ruby 1.9.3p392
  • zsh 4.3.11

E script simples

$ cat argv.rb
p ARGV
# print on screen passed arguments

Exemplo com argumentos passados ​​pela linha de comando:

$ ruby argv.rb --tag key:value
["--tag", "key:value"]
# --> it's okay, array should include 2 elements

Exemplo com argumentos passados ​​pela variável:

$ export PARAMS="--tag key:value"
$ ruby argv
.rb $PARAMS
["--tag key:value"]
# --> one element - something went wrong

Mude o shell para bash e execute-o novamente:

$ bash
bash
-3.2$ ruby argv.rb --tag key:value
["--tag", "key:value"]
# --> two elements
bash
-3.2$ export PARAMS="--tag key:value"
bash
-3.2$ ruby argv.rb $PARAMS
["--tag", "key:value"]
# --> two elements

Para o bash está tudo bem, de alguma forma o zsh passa / gera variáveis ​​de maneira diferente. Se alguém souber como fazer funcionar com o zsh, deixe um comentário.

De qualquer forma, tenha cuidado ao usar variáveis ​​zsh, ruby ​​e constante ARGV.