为了调试,我想跳入我拥有的任何 docker 容器,并立即在我的交互式 bash shell 上设置一些细节。出于某种原因,下面的 --init-file 样式现在正在工作。
与许多事情一样,我想这是我遗漏的某种转义序列问题。有什么建议?
docker exec -it mycontainer bash --init-file <(echo "PS1='\w\$ '; TERM=xterm256; alias ls='ls -GFh'")
Run Code Online (Sandbox Code Playgroud)
--init-file 中的任何命令都不会应用于在容器中启动的 bash shell。
小智 1
给定文件中的 bash 配置my-bash-niceties
#my-bash-niceties
PS1='\w\$ '
TERM=xterm256
别名 ll='ls -GFh'
一种可能性是将 bash 配置文件安装到容器中......
docker run --detach -it -v `pwd`/my-bash-niceties:/etc/bashrc --name mycontainer bash:4.0
Run Code Online (Sandbox Code Playgroud)
...并使用它作为 init 文件调用 bash。
docker exec -it mycontainer bash --init-file /etc/bashrc
Run Code Online (Sandbox Code Playgroud)
另一种选择是将 bash 配置文件安装为~/.bashrc
...
docker run --detach -it -v `pwd`/my-bash-niceties:/root/.bashrc --name mycontainer bash:4.0
Run Code Online (Sandbox Code Playgroud)
...然后在容器中执行 bash 。
docker exec -it mycontainer bash
Run Code Online (Sandbox Code Playgroud)
理论上,第三个(也是最好的!)选项只是将 bash 配置文件安装为 /etc/profile.d/my_bash_rc.sh (任何 .sh 文件都可以),但我不知道为什么这个容器不这样做遵守这一公约。:(
顺便说一句,选项 --init-file 指的是容器文件系统内的文件。
归档时间: |
|
查看次数: |
1179 次 |
最近记录: |