如何更改产生的孩子bash的bash提示符? 特别是一个docker的shell

我们已经创build了大部分相同的docker快速启动脚本的自定义版本。 我们想要进一步的定制是改变提示,清楚地指出你在dockerconfiguration的shell中:

(docker) ~/src/code $

脚本产生一个像这样的子shell:

 eval $($DOCKER_MACHINE env $VM --shell=bash) USER_SHELL=$(dscl /Search -read /Users/$USER UserShell | awk '{print $2}' | head -n 1) if [[ $USER_SHELL == *"/bash"* ]] || [[ $USER_SHELL == *"/zsh"* ]] || [[ $USER_SHELL == *"/sh"* ]]; then $USER_SHELL --login else $USER_SHELL fi 

我可以很容易地通过export PS1="(docker)$"来更改我的主机提示符,但是难以在产生子shell中进行这样的更改。

我试过$USER_SHELL --login --noprofile -c "export PS1='(docker)'"

没有运气。

-c选项会导致shell执行给定的string,然后退出 。 相反,您可以使用添加所需的PS1值到交互式shell

 PS1='...' $USER_SHELL --login --noprofile 

(一般来说,你不需要导出PS1 ,它只能被shell本身使用,而不能被任何subprocess使用,任何子shell都会从configuration文件中configuration它们的提示,这就是为什么你需要使用--noprofile来防止它从覆盖您提供的“外部”提示。)