我尝试将 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: "