docker exec 交互式 bash 与 init 命令

docker exec 交互式 bash 与 init 命令

为了进行调试,我想跳转到我拥有的任何 docker 容器,并立即在我的交互式 bash shell 上设置一些细节。出于某种原因,下面的 --init-file 样式现在起作用了。

和许多事情一样,我猜想这是我遗漏的某种转义序列问题。有什么建议吗?

docker exec -it mycontainer bash --init-file <(echo "PS1='\w\$ '; TERM=xterm256; alias ls='ls -GFh'")

--init-file 中的任何命令均不应用于容器中启动的 bash shell。

答案1

鉴于文件中的 bash 配置my-bash-niceties

#my-bash-niceties
PS1='\w\$ '
TERM=xterm256
别名 ll='ls -GFh'

选项1

一种可能性是将 bash 配置文件挂载到你的容器中...

docker run --detach -it -v `pwd`/my-bash-niceties:/etc/bashrc --name mycontainer bash:4.0

...并使用它作为初始化文件来调用 bash。

docker exec -it  mycontainer bash  --init-file /etc/bashrc

选项 2

另一个选择是将您的 bash 配置文件挂载为您的~/.bashrc...

docker run --detach -it -v `pwd`/my-bash-niceties:/root/.bashrc --name mycontainer bash:4.0

...然后在容器中执行 bash。

docker exec -it  mycontainer bash

理论上,第三个(也是最好的!)选项是将 bash 配置文件挂载为 /etc/profile.d/my_bash_rc.sh(任何 .sh 文件都可以),但我不知道为什么这个容器不遵守这个约定。:(

顺便说一下,选项--init-file指的是一个文件里面容器的文件系统。

相关内容