Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改生成的子bash的bash提示符?特别是docker shell_Bash_Docker - Fatal编程技术网

如何更改生成的子bash的bash提示符?特别是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配置的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\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的唯一区别在于,它在启动时会生成不同的文件。忽略我的评论。