为了进行调试,我想跳转到我拥有的任何 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指的是一个文件里面容器的文件系统。