我有一个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
答案 0 :(得分:0)
环境变量ENV
命名的文件是在启动POSIX兼容shell(或POSIX模式下的bash)时获取的。如果您想在非POSIX模式下支持bash,您还需要设置BASH_ENV
。
这意味着您可以告诉Docker更新环境变量ENV
以指向一个文件,该文件在由shell解释器提供时将运行eval "$(pyenv init -)"
。