首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我运行-挂载bashrc时,bashrc文件无法工作。

当我运行-挂载bashrc时,bashrc文件无法工作。
EN

Stack Overflow用户
提问于 2021-04-15 16:47:55
回答 1查看 248关注 0票数 0

我在docker (搜索引擎)上测试一个应用程序,但是当我使用docker run时,bashrc不能工作,例如,如果bashrc中有一个别名,我就不能使用它。文件bashrc被复制到容器中,但仍然不能使用它。我的问题是为什么不呢?这仅仅是因为bashrc需要重新加载,还是还有另外一个原因?

代码语言:javascript
复制
sudo docker run \
     --mount type=bind,source=$(pwd)/remise/bashrc,destination=/root/.bashrc,readonly \
     --name="s-container" \
     ubuntu /go/bin/s qewrty
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-16 01:05:57

如果您将容器启动为

代码语言:javascript
复制
docker run ... image-name \
  /go/bin/s qwerty

当Docker创建容器时,它直接运行命令/go/bin/s qwerty;它不调用bash或任何其他shell来执行它。任何东西都不知道如何寻找.bashrc文件。

类似地,如果您的Dockerfile指定

代码语言:javascript
复制
CMD ["/go/bin/s", "qwerty"]

它直接运行命令,没有shell。

有一个CMD的备用shell形式,它接受一个命令字符串,并通过/bin/sh -c运行它。这确实涉及到一个shell;但是它既不是交互式的也不是登录的shell,它作为sh被调用,所以它不会读取任何shell dotfile(关于/bin/sh碰巧是GNU的具体情况,请参见Bash启动文件)。

由于这些指定主容器命令的公共路径都不会读取.bashrc或其他shell dotfile,所以尝试编写或注入这些文件通常是没有意义的。如果需要设置环境变量,请考虑Dockerfile ENV指令或入口点包装脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67112648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档