$ export snag='crag'
$ env | grep snag
snag=crag
$ export CORS_WHITE_LIST='please work'
$ env | grep CORS
$
我无法设置CORS_WHITE_LIST环境变量。我可以用除了那个之外的所有其他字符串来做...为什么会这样?在OS X上,如果重要......
编辑:最后只是通过使用一个新的终端会话来解决这个问题,但我仍然很好奇为什么会发生这种情况,因为它让我感到很沮丧... ...
答案 0 :(得分:3)
当变量先前声明为数组时会发生这种情况。
阵列过去是可以导出的,但是在ShellShock之后删除了对此的支持。现在导出一个没有效果。
为数组变量指定标量是完全有效的,扩展它将正确显示新值,但变量不会停止成为数组!相反,两个操作都将隐式分配和读取第0个元素。
以下是如何重现它:
$ failing=()
$ export working="Foobar" failing="Foobar"
$ env | grep Foobar
working=Foobar
从上面继续,以下是如何区分它们的方法:
$ declare -p working failing
declare -x working="Foobar"
declare -ax failing=([0]="Foobar")
标志中的a
表示它是一个数组,因此无法导出。要使其可导出,您可以unset
然后重试。