无法设置特定的环境变量

时间:2018-02-01 19:27:28

标签: bash macos

$ export snag='crag'
$ env | grep snag
snag=crag
$ export CORS_WHITE_LIST='please work'
$ env | grep CORS
$

我无法设置CORS_WHITE_LIST环境变量。我可以用除了那个之外的所有其他字符串来做...为什么会这样?在OS X上,如果重要......

编辑:最后只是通过使用一个新的终端会话来解决这个问题,但我仍然很好奇为什么会发生这种情况,因为它让我感到很沮丧... ...

1 个答案:

答案 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然后重试。