如何在Docker容器中设置PS1

我想为容器设置$ PS1环境variables。 它帮助我确定多层次或复杂的docker环境设置。 目前docker集装箱提示与

根@容器ID#

如果我可以改变它,我可以通过查看$ PS1提示本身来识别容器。

[等级-1]根@容器-ID#

我通过制作自己的图像(Dockerfile),.profile文件等来导出$ PS1来做实验,但这并不是反映。

我们使用类似的技术来跟踪复杂容器构build中的input和输出。

https://github.com/ianmiell/shutit/blob/master/shutit_global.py#L1338

这一行代表了处理docker/(p)期望组合的来之不易的经验:

"SHUTIT_BACKUP_PS1_%s=$PS1 && PS1='%s' && unset PROMPT_COMMAND" 

备份提示是方便的,如果你想恢复,设置PS1与PS1 =设置PS1,并取消设置PROMPT_COMMAND消除任何令人讨厌的意外terminal被重置等。

如果问题是如何确保在运行容器(而不是构build)时设置它,那么根据运行容器的方式,您可能需要向.bashrc / .profile文件添加一些内容。 据我所知,没有办法确保它与dockerfile指令,并使其坚持。

这个Dockerfile通过这样做来设置PS1

 RUN echo 'export PS1="[\u@docker] \W # "' >> /root/.bash_profile 

我通常创build/home/USER/.bashrc或/root/.bashrc,这取决于Dockerfile的用户是谁。 那效果很好。 我试过了

 ENV PS1 '# ' 

但那从来没有为我工作。

你应该在.profile设置,而不是.bashrc

只需打开.profile从你的根目录或家里,用PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '或任何你想要的。

请注意,您需要重新启动您的容器。