如何更改生成的子bash的bash提示符?特别是docker shell
我们已经创建了一个基本相同的自定义版本。我们想做的另一个定制是更改提示符,以清楚地指示您何时在docker配置的shell中:如何更改生成的子bash的bash提示符?特别是docker shell,bash,docker,Bash,Docker,我们已经创建了一个基本相同的自定义版本。我们想做的另一个定制是更改提示符,以清楚地指示您何时在docker配置的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_S
(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\u SHELL--login--noprofile-c“export PS1=”(docker)“
运气不好。选项
-c
使shell执行给定的字符串,然后退出。相反,您可以将所需的PS1
值添加到具有
PS1='...' $USER_SHELL --login --noprofile
(通常,您不需要导出
PS1
。它仅由shell本身使用,而不是由任何子进程使用。任何子shell都从其配置文件配置其提示符,这就是为什么您需要--noprofile
以防止它覆盖您从“外部”提供的提示符。)登录shell清除环境,但主页
、shell
、路径
、术语
、日志名
和用户
除外。如果您没有充分的理由以登录shell的形式运行shell,那么最好删除--login
选项。@4ae1e1真的吗<代码>导出FOO=5;bash——登录;然后echo$FOO
。仍然打印5。据我所知,登录shell和“常规”shell的唯一区别在于,它在启动时会生成不同的文件。忽略我的评论。