对于非交互式非登录shell,哪些init文件来源为ash?

时间:2018-02-01 23:03:19

标签: linux bash dockerfile ash

我有一个Docker容器,它使用alpine:3.7作为基本图像,因此使用/bin/ash作为其shell。

我将容器置于后台运行模式。我的意图是我可以继续使用docker exec $CONTAINER_ID <command>。因此,该命令将以非交互式非登录shell模式执行。

但是,有时我的<command>处于非标准路径,因此我很乐意export PATH,因此我不会输入完全合格的路径。或者,有时某些软件安装要求我在shell init文件中添加一些命令(例如eval "$(pyenv init -)")。

问题是:在/bin/ash shell下,对于非交互式非登录shell命令执行,我可以在哪里导出这个新的PATH或我的eval "$(pyenv init -)",以便我可以对所有加载/来源的docker exec做适当的事情吗?

如果Ash无法做到,我也会考虑Bash。

TIA

1 个答案:

答案 0 :(得分:0)

环境变量ENV命名的文件是在启动POSIX兼容shell(或POSIX模式下的bash)时获取的。如果您想在非POSIX模式下支持bash,您还需要设置BASH_ENV

这意味着您可以告诉Docker更新环境变量ENV以指向一个文件,该文件在由shell解释器提供时将运行eval "$(pyenv init -)"