我在PS1文件中有一个bash_profile变量
orange=$(tput setaf 166);
yellow=$(tput setaf 228);
green=$(tput setaf 71);
white=$(tput setaf 15);
bold=$(tput bold);
reset=$(tput sgr0);
PS1="\[${bold}\]";
PS1+="\[${orange}\]\u"; # username
PS1+="\[${white}\]@";
PS1+="\[${yellow}\]\h "; # host
PS1+="\[${green}\]\w"; # working directory
PS1+="\[${white}\]\$ \[${reset}\]"; # '$' (and reset color)
export PS1; 当我打开新的终端实例时,它将正确地显示除颜色之外的所有内容。

但是,当我执行命令时
source .bash_profile颜色起作用了。如果我打开一个新标签它就消失了。

但是,在新的终端实例中,在不执行源命令的情况下,颜色适用于
export PS1="\[\033[35m\]\t\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "
[

这种奇怪行为的原因是什么?
在breif中,在一个新的终端会话中,第一个PS1不显示颜色,但是放在同一个bash_profile文件中的第二个ps1正在解压它。但是第一种方法是在资源来源时显示颜色。
注:我正在使用mac。我也确信变量是在bash_profile中设置的,但是没有设置颜色。
发布于 2019-01-03 13:08:01
我已经为我的xterm-256终端安装了太阳能配色方案/主题。是那个引起这个问题的。当我改变配色方案时,PS1工作得很好。
发布于 2018-10-12 12:55:15
你应该多调查一点(是的,甚至更多)。
在每种情况下,您都应该使用printf "%q\n" "$PS1"来查看变量PS1的确切值(带有转义的不可打印字符)。您只是想将颜色添加到已经设置的PS1变量中吗?所以,如果您得到了未着色的输出,这可能是因为您的代码没有执行,所以原始值仍然是设置的吗?然后,只执行配置文件脚本。
.bash_profile通常只在启动登录-shell时才执行。现在,许多发行版都不正确,而且在这方面有很多解决办法,因此它们通常包含.bashrc文件,这些文件最初是.bash_profile的源。.bashrc是为每个新的shell提供的,因此有效地,您的.bash_profile也可以为每个shell提供。
我可以猜到,您的.bashrc首先来源于.bash_profile,然后将PS1设置为类似于您的值,只是没有颜色。但当然,这是猜测。
发布于 2018-10-12 13:10:28
在OP的例子中,我怀疑需要使用~/.bashrc而不是~/.bash_profile来设置颜色。
下面是事情的运作方式:
在设置bash环境时涉及到许多文件。
/etc/profile设置系统范围内的配置文件。
~/.bash_profile,~/.bash_login,~/.profile --当bash作为登录shell被调用时,默认情况下会读取这些
~/.bashrc -这总是被读取的,除非bash作为sh调用,或者bash作为bash --norc调用。
~/.bash_logout -登录外壳清理
~/.inputrc -读行初始化文件。
哪些文件以及读取这些文件的顺序取决于bash的调用方式。
有些情况并非都是相互排斥的:
sh调用的bash您需要知道哪些情况适用于您的调用,以确定哪些文件将被读取。
man bash并搜索调用,以获得确切的详细信息。
https://stackoverflow.com/questions/52764731
复制相似问题