linux - 非交互式、非登录 shell 的 ash 中有哪些初始化文件?

标签 linux bash dockerfile ash

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

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

但是,有时我的 <command>处于非标准路径中,因此我很乐意export PATH所以我不输入完全限定的路径。或者,有时某些软件安装需要我在我们的 shell 初始化文件中放置一些命令(例如 eval "$(pyenv init -)" )。

问题是:在/bin/ash下shell,用于非交互式、非登录 shell 命令执行,我可以在哪里导出这个新的 PATH ,或者我的 eval "$(pyenv init -)" ,这样我就可以做我的 docker exec是否正确加载/采购了所有内容?

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

TIA

最佳答案

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

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

关于linux - 非交互式、非登录 shell 的 ash 中有哪些初始化文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48573182/

相关文章:

linux - 从Linux终端按ip获取网络带宽统计信息

bash - 防止 bash 别名在 shell 启动时评估语句

linux - 为什么这个 shell 脚本不起作用?

postgresql - 构建dockerfiile是可行的,但是从compose引用它并运行它失败。不确定是不是dockerfile文件路径错误?

docker - 评估 Dockerfile 中的 bash 表达式

php - 我们的 Centos 服务器感染了一些恶意软件。它正在调用随机 IP/域。如何阻止服务器发出外部请求?

linux - 如何检查磁盘读取或写入利用率

linux - 我如何从我提交的git分支中获取文件列表

linux - 如何在 .profile 或 .bash_profile 中设置 PATH in ubuntu

ubuntu - Dockerfile 中的 USER 语句后 Ubuntu Docker 容器中的特权