Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting environment variable in ZSH gives number expected

Tags:

zsh

I'm trying to set an array in ZSH (configured using oh-my-zsh).

export AR=(localhost:1919 localhost:1918)

but I'm getting an error like such:

zsh: number expected

If I don't add the export command, it's just fine. I'm not typing the above in a *rc file, just in the zsh prompt. What could be the problem?

like image 410
Mark Avatar asked Aug 16 '13 07:08

Mark


1 Answers

You can't export an array in zsh.

For more info: http://zsh.sourceforge.net/Guide/zshguide02.html

Note that you can't export arrays. If you export a parameter, then assign an array to it, nothing will appear in the environment; you can use the external command printenv VARNAME (again no $ because the command needs to know the name, not the value) to check. There's a more subtle problem with arrays, too. The export builtin is just a special case of the builtin typeset, which defines a variable without marking it for export to the environment. You might think you could do

typeset array=(this doesn\'t work)

but you can't --- the special array syntax is only understood when the assignment does not follow a command, not in normal arguments like the case here, so you have to put the array assignment on the next line. This is a very easy mistake to make. More uses of typeset will be described in chapter 3; they include creating local parameters in functions, and defining special attributes (of which the export attribute is just one) for parameters.

like image 134
Wolph Avatar answered Sep 24 '22 15:09

Wolph