小编Mic*_*bus的帖子

在bash和sh模式下运行的bash中ENV和BASH_ENV的处理

我正在尝试找到一种调用 shell 的方法(我需要首先支持 bash 和 posix shell),以确保在开始时执行某些命令(/etc/profile~/.profile任何其他命令)。

当我执行以下操作时:

echo "echo 'test'" > /tmp/file
BASH_ENV=/tmp/file ENV=/tmp/file sh
Run Code Online (Sandbox Code Playgroud)

我得到:

test
$
Run Code Online (Sandbox Code Playgroud)

这很好。检查$SHELL发现它实际上正在模式bash下运行sh

当我尝试同样的操作时bash

echo "echo 'test'" > /tmp/file
BASH_ENV=/tmp/file ENV=/tmp/file bash
Run Code Online (Sandbox Code Playgroud)

我得到:

$
Run Code Online (Sandbox Code Playgroud)

我希望让 bash 在模式ENV下运行我的文件中的命令,并在常规模式下执行相同的操作,但这并没有发生。shBASH_ENV


更广泛的背景是,我正在尝试构建一个可以在其中调用bash或 的docker 容器sh,但环境变量确保一开始就在 shell 中执行一些初始化。

Dockerfile所以重现问题的最小值是:

FROM alpine

RUN apk add bash

RUN echo "echo 'test'" >> /etc/profile
ENV ENV=/etc/profile
ENV BASH_ENV=/etc/profile
Run Code Online (Sandbox Code Playgroud)

同样,构建后,运行 with 可以 …

shell bash

4
推荐指数
1
解决办法
7285
查看次数

标签 统计

bash ×1

shell ×1