如何更改产生的孩子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
来防止它从覆盖您提供的“外部”提示。)