为什么导出命令在 PS1 上不起作用

为什么导出命令在 PS1 上不起作用

我尝试将 PS1 设置为“KeepPrompt”,并防止它在进入子 shell 时被更改。为此,我输入了以下内容:

user@host:~$ echo $SHLVL 
user@host:~$ 1 
user@host:~$ export PS1="KeepPrompt: "
KeepPrompt:  
KeepPrompt: echo $SHLVL
KeepPrompt: 1
KeepPrompt: bash 
user@host:~$ 
user@host:~$ echo $SHLVL 
user@host:~$ 2

正如您所看到的,当我尝试创建一个新的子 shell 时,PS1 定义无法在进入新 shell 后保留下来。为什么会这样?

答案1

当你初始化(bash)(子)shell 时有多个文件来源

对我来说(我认为这是 Ubuntu 的默认设置)PS1将被/etc/bash.bashrc和覆盖~/.bashrc

此外,仅当其为空时才/etc/profile设置。$PS1


最好是在末尾添加这一段.bashrc

PS1="KeepPrompt: "

相关内容