【发布时间】:2019-06-09 17:25:51
【问题描述】:
我试图弄清楚为什么以下命令只适用于 bash 而不适用于 zsh:
重击:
bash-3.2$ eval "MYVALUE=mystring" export MYVALUE
bash-3.2$ echo $MYVALUE
mystring
Zsh:
➜ ~ eval "MYVALUE=mystring" export MYVALUE
➜ ~ echo $MYVALUE
➜
我希望zsh 打印mystring,但实际上它什么也没打印。
看起来export 无法读取刚刚解析的值,但实际上eval 正在工作,因为如果我使用zsh 运行这个其他命令:
➜ ~ eval "MYVALUE=mystring" env | grep MYVALUE
MYVALUE=mystring
它按预期工作!
谁能帮我弄清楚为什么 eval / export 不能与zsh 一起使用,但可以与bash 一起使用,以及最终如何使其也与zsh 一起使用?非常感谢!
【问题讨论】:
-
你为什么要使用
eval?export MYVALUE=mystring或MYVALUE=mystring; export MYVALUE有什么问题? -
@glennjackman 抱歉,您在这里缺少一些上下文。我需要
eval一个更复杂的脚本并导出一些在这个脚本中定义的变量。使用 bash 一切正常,使用 zsh 则不行。我将问题范围缩小到 eval / export ,以便更容易重现和获得帮助。 -
@glennjackman 您实际上提出了一个有效的解决方案:) 如果我这样做
eval "MYVALUE=mystring"; export MYVALUE它适用于 bash 和 zsh。让我们看看是否有其他方法,但这绝对适合我! -
我不是 zsh 用户,所以无法提供更具体的信息。
标签: bash shell export eval zsh