我无法正确设置环境变量。
这些是我deploy.sh的前几行:
if [[ -z ${PEM_PATH+x} ]]; then
printf "Please set the PEM_PATH environment variable\n"
exit 1
fi
这是我的终端输出:
bash-3.2$ set PEM_PATH="/Users/Elasticsearch/Desktop/ec2-poc.pem"
bash-3.2$ ls
Jenkinsfile bps-dashboard.iml mvnw node_modules package.json src webpack.config.js
README.md deploy.sh mvnw.cmd package-lock.json pom.xml target
bash-3.2$ set PEM_PATH="/Users/Elasticsearch/Desktop/ec2-poc.pem"
bash-3.2$ echo $PEM_PATH
/Users/Elasticsearch/Desktop/ec2-poc.pem
bash-3.2$ sh deploy.sh
Please set the PEM_PATH environment variable
bash-3.2$
我在这里做什么错了?
答案 0 :(得分:2)
set
不会在bash(或其他POSIX系列外壳程序)中设置变量-它配置外壳程序选项标志或更改活动参数列表($1
,$2
和等等)。
您可以运行以下任一命令将PEM_PATH
定义为环境变量(不使用export
的{{1}}或-x
参数或使用{{1 }}是常规的,未导出的shell变量):
declare
-使用一个命令定义和导出变量。set -a
-首先将export PEM_PATH="/Users/Elasticsearch/Desktop/ec2-poc.pem"
定义为常规shell变量,然后将其提升为环境变量PEM_PATH="/Users/Elasticsearch/Desktop/ec2-poc.pem"; export PEM_PATH
-使用仅bash扩展名PEM_PATH
将declare -x PEM_PATH="/Users/Elasticsearch/Desktop/ec2-poc.pem"
定义为导出变量。declare
-默认情况下,使用PEM_PATH
将所有变量导出到环境;然后设置变量;然后关闭该标志。