我正在处理Heroku
中托管的项目。该应用程序被硬编码为使用Amazon S3并在环境变量中查找键。这是我在看了一些例子之后写的,我不确定它为什么不起作用。
echo $1
if [ $1 != "unset" ]; then
echo "set"
export AMAZON_ACCESS_KEY_ID=XXXXXXXXXXXX
export AMAZON_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export S3_BUCKET_NAME=XXXXXXXXX
else
echo "unset"
export AMAZON_ACCESS_KEY_ID=''
export AMAZON_SECRET_ACCESS_KEY=''
export S3_BUCKET_NAME=''
fi
运行脚本时,它会转到set
部分。但是在通过echo $AMAZON_ACCESS_KEY_ID # => ''
检查时。
我不确定是什么导致了这个问题。 我会对...感兴趣
heroku config
变量的方法。答案 0 :(得分:1)
您需要source
脚本,而不是像孩子一样运行它。如果直接运行脚本,它的环境会在结束时消失。获取脚本会导致它在当前环境中执行。 help source
了解更多信息。
示例:
$ VAR=old_value
$ cat script.sh
#!/bin/bash
export VAR=new_value
$ ./script.sh
$ echo $VAR
old_value
$ source script.sh
$ echo $VAR
new_value
使用source
执行的脚本不需要执行,也不需要" shebang" line(#!/bin/bash
)因为它们不作为单独的进程运行。实际上,为了避免它们作为命令运行,最好不要使它们可执行,因为它不会按预期工作。