【发布时间】:2017-01-12 10:34:21
【问题描述】:
我正在尝试自动化一些应该是相当简单的任务,但我找不到正确的标志/方法来做到这一点。
我正在自动化一堆 docker 容器,并且我想知道我正在以某种人类可读的形式使用哪个 shell。
所以,我开始/创建一个容器:
docker run -v /home/igor/Downloads:/home/Downloads/ -h debian7 -p 8081:8080 -itd --name igorDebian72 debian:7
然后尝试进入它的 bash,它已经很好地改变了提示和颜色:
sudo docker exec -ti igorDebian72 /bin/bash -c "`export PS1="\e[1;32m[\u@ \\H \\W \\@]\$ \e[m "`"
但是,这似乎是“运行”命令并退出回主机,所以它没有用。
如果我分别运行这两件事:
sudo docker exec -ti igorDebian72 /bin/bash
这让我进入容器 bash,然后:
export PS1="\e[1;32m[\u@ \\H \\W \\@]\$ \e[m "
给了我我想要的。带有可见容器名称和与主机不同颜色的 Bash 提示。
如何在一行中实现?
附:同时,从这里使用 cmets 我已经尝试过:
sudo docker exec -ti igorDebian72 bash --rcfile <(echo 'export PS1="\e[1;32m[\u@ \\H \\W \\@]\$ \e[m "')
sudo docker exec -ti igorDebian72 bash --rcfile <(export PS1="\e[1;32m[\u@ \\H \\W \\@]\$ \e[m ")
它保留在 bash 中,但似乎脚本没有执行。
我尝试将其保存在 .sh 文件中,然后这样做:
sudo docker exec -ti igorDebian72 bash --rcfile <(echo trueColors.sh)
同样,保留在容器中,但不运行脚本。
【问题讨论】:
-
惊讶的是,当现有问题与 docker 无关时,它被标记为重复
-
这个问题不是重复的,知道答案实际上会很有帮助,因为其他解决方案似乎不适用于 Docker。