首页 > 解决方案 > Azure DevOps Pipeline:bash 任务不会从基于 Ubuntu 的 EC2 实例中获取 .bashrc 或 /etc/profiles

问题描述

我们正在使用 Azure DevOps Pipelines 在 AWS 中的 EC2 实例上编排 bash 脚本,运行 Ubuntu 18.04。

在管道中,我们主要有带有内联脚本的 bash 任务。

我们希望 bash 任务从~/.bashrc和中获取环境变量/etc/profiles,因此我们确保取消选中高级选项“不加载配置文件启动/初始化文件”“不读取 ~/.bashrc 初始化文件”

然而,似乎两个初始化文件都没有被读取。

请参阅我们的示例 bash 脚本:

#!/bin/bash -i

echo "HTTP_PROXY=${HTTP_PROXY}"
source /etc/profile
echo "HTTP_PROXY=${HTTP_PROXY}"

echo "SOMEVAR=${SOMEVAR}"
source ~/.bashrc
echo "SOMEVAR=${SOMEVAR}"

...将输出:

HTTP_PROXY=
HTTP_PROXY=<some-proxy-host>:<some-port>
SOMEVAR=
SOMEVAR=

我们只有在明确采购后才能获得代理变量。/etc/profiles

此外,采购~/.bashrc也没有按预期工作;这可能是因为脚本未在交互式 bash 模式下运行。查看~/.bashrc我们看到需要交互模式,否则它将立即退出:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

为什么不/etc/profiles自动获取来源?我们如何确保 bash 任务以交互模式运行?

标签: bashamazon-ec2azure-pipelinesubuntu-18.04

解决方案


推荐阅读