为什么执行“source /etc/profile”命令后命令提示符的颜色会改变?

问题描述 投票:0回答:1

当我执行命令“source /etc/profile”时,命令提示符的颜色改变了,为什么会发生这种情况?现象如下图所示,命令提示符“jihan@ubuntu”由绿色变为白色: enter image description here

在 /etc/profile 文件中,我刚刚添加了一行代码来更新 PATH,如下所示: enter image description here

我在网上搜索答案,没有找到相关结果。我想知道颜色变化的原因

ubuntu terminal command profile
1个回答
0
投票

为什么会出现这种情况

发生这种情况是因为

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。

© www.soinside.com 2019 - 2024. All rights reserved.