bash - 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 任务以交互模式运行?
解决方案
推荐阅读
- homebrew - 如何将自制软件包标记为候选发布?
- api - 使用证书测试 API
- wordpress - Wordpress - 重写 url 中的分类值以进行翻译
- github - 如何解决 GitHub 保护分支上的合并冲突。?
- vba - 如何用vba代码打开外部访问数据库并最大化
- r - R chisq.test - 通过df自动化,每个变量都有,df有数据,不是计数,宽格式
- excel - Excel 索引匹配 - 最大、第二大、第三大且没有重复匹配
- python - 如何使用 django 从用户输入中计算未保存到数据库的值和数据库中的值
- clojure - 使用 environ 访问 leiningen project.clj 中的环境变量时出错
- gremlin - Gremlin - 如果不存在则添加顶点的批量查询