当我执行命令“source /etc/profile”时,命令提示符的颜色改变了,为什么会发生这种情况?现象如下图所示,命令提示符“jihan@ubuntu”由绿色变为白色:
在 /etc/profile 文件中,我刚刚添加了一行代码来更新 PATH,如下所示:
我在网上搜索答案,没有找到相关结果。我想知道颜色变化的原因
发生这种情况是因为
PS1
环境变量(设置提示文本和颜色)实际上是在两个不同的配置文件中设置的:
# file /etc/bash.bashrc, line 21
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# file ~/.bashrc, line 60
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
第一个文件没有颜色格式,而第二个文件有一堆设置颜色的转义序列(以
\[003
开头的那些东西)。似乎在正常的 bash 初始化过程中,~/.bashrc
在 /etc/bash.bashrc
之后运行,因此您会得到彩色提示。然而,当你运行source /etc/profile
时,你手动指示bash执行配置文件/etc/profile
。如果您查看该文件内部,您可以看到以下命令:
# file /etc/profile, line 9
. /etc/bash.bashrc
这会导致执行
/etc/bash.bashrc
,设置单色提示。似乎没有任何代码可以获取 ~/.bashrc
,因此提示仍然是单色的。
可以在
source ~/.bashrc
之后手动运行 source /etc/profile
来恢复提示颜色,或者运行 exec bash
来完全重置 bash。第一种方法将保留您定义的任何变量和任何其他状态位,而第二种方法将为您提供一个全新的 shell,类似于打开一个新的终端窗口。
我已经在 Ubuntu 20.04.6 LTS 上对此进行了测试。如果你使用不同的版本,配置文件的具体内容可能会有所不同,但我相信原理是一样的。
下次,请包含您认为可能相关的任何文件的内容,而不仅仅是部分屏幕截图。这将使人们更容易帮助您,即使他们自己没有运行 ubuntu。