如何在 bash 脚本中为加壳镜像设置环境变量
How do I set env variables in bash script for a packer image
我正在尝试使用 Maven 和 Gradle 在 Packer 中烘焙 AMI。下面是我的 json 文件。
#!/bin/bash
sudo yum -y update
sudo yum install -y httpd
sudo mkdir -p /usr/local/apache-maven
cd /usr/local/apache-maven
sudo wget http://mirror.olnevhost.net/pub/apache/maven/binaries/apache-maven-3.2.2-bin.tar.gz
sudo tar xvf apache-maven-3.2.2-bin.tar.gz
echo "Maven is installed at usr local apache-maven #maven"
sudo mkdir /opt/gradle
cd /opt/gradle
sudo wget https://services.gradle.org/distributions/gradle-3.4.1-bin.zip
sudo unzip -d /opt/gradle gradle-3.4.1-bin.zip
echo "Gradle is installed at opt gradle #gradle"
cat > set-vars1.sh
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.2
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export PATH=$PATH:/opt/gradle/gradle-3.4.1/bin
eval $(./set-vars1.sh)
我无法退出脚本并且无法导出变量。如何退出并 运行 脚本?
我想做的是创建一个带有打包程序的 AMI 实例,我正在为其编写上述脚本作为供应商。我可以下载并解压缩 maven 和 gradle 但环境变量没有导出。
所以基本上我想在 运行 时间在实例中设置变量。
- 您无法退出脚本,因为
cat > set-vars1.sh
需要来自标准输入流的数据。只要您不在命令行中提供该输入并在其后跟一个 EOF (control-D),就不会发生任何事情。
- 后续的
export
命令没有执行,因为脚本停留在上面的 cat
命令。
cat << EOF > set-vars1.sh
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.2
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export PATH=$PATH:/opt/gradle/gradle-3.4.1/bin
EOF
我正在尝试使用 Maven 和 Gradle 在 Packer 中烘焙 AMI。下面是我的 json 文件。
#!/bin/bash
sudo yum -y update
sudo yum install -y httpd
sudo mkdir -p /usr/local/apache-maven
cd /usr/local/apache-maven
sudo wget http://mirror.olnevhost.net/pub/apache/maven/binaries/apache-maven-3.2.2-bin.tar.gz
sudo tar xvf apache-maven-3.2.2-bin.tar.gz
echo "Maven is installed at usr local apache-maven #maven"
sudo mkdir /opt/gradle
cd /opt/gradle
sudo wget https://services.gradle.org/distributions/gradle-3.4.1-bin.zip
sudo unzip -d /opt/gradle gradle-3.4.1-bin.zip
echo "Gradle is installed at opt gradle #gradle"
cat > set-vars1.sh
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.2
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export PATH=$PATH:/opt/gradle/gradle-3.4.1/bin
eval $(./set-vars1.sh)
我无法退出脚本并且无法导出变量。如何退出并 运行 脚本?
我想做的是创建一个带有打包程序的 AMI 实例,我正在为其编写上述脚本作为供应商。我可以下载并解压缩 maven 和 gradle 但环境变量没有导出。
所以基本上我想在 运行 时间在实例中设置变量。
- 您无法退出脚本,因为
cat > set-vars1.sh
需要来自标准输入流的数据。只要您不在命令行中提供该输入并在其后跟一个 EOF (control-D),就不会发生任何事情。 - 后续的
export
命令没有执行,因为脚本停留在上面的cat
命令。
cat << EOF > set-vars1.sh
export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.2
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export PATH=$PATH:/opt/gradle/gradle-3.4.1/bin
EOF