OSX El Capitan 终端/.bash_profile 颜色错误

OSX El Capitan terminal/.bash_profile color bug

我最近更新到 El Capitan,发现我的终端出现了一些问题,我将问题缩小到我的 .bash_profile。我的 .bash_profile 中有这个,所以提示会根据 git 中的变化改变颜色。

# A more colorful prompt
# \[\e[0m\] resets the color to default color
c_reset='\[\e[0m\]'
# \e[0;31m\ sets the color to red
c_path='\[\e[0;31m\]'
# \e[0;32m\ sets the color to green
c_git_clean='\[\e[0;32m\]'
# \e[0;31m\ sets the color to red
c_git_dirty='\[\e[0;31m\]'

它正在使用 OSX Yosemite 的最新更新。另外,据我所知,颜色代码是正确的。然而,我的终端是这样显示的:

github.io [\[\e[0;31m\]working\[\e[0m\]]:>

如您所见,我在 github 目录的 "working" 分支上。任何不在 github 上的东西看起来都很正常。

Downloads:> 

截至目前,我已经切换到 iTerm,它似乎没有最新版本的问题(已更新以适应 El Capitan)。让我认为这是一个终端问题,而不是 github。

将所有这些设置为默认终端颜色可能是最简单的。该转义序列在您的终端示例中似乎正常工作:

# A more colorful prompt
# \[\e[0m\] resets the color to default color
c_reset='\[\e[0m\]'
# \e[0;31m\ sets the color to red
c_path='\[\e[0m\]'
# \e[0;32m\ sets the color to green
c_git_clean='\[\e[0m\]'
# \e[0;31m\ sets the color to red
c_git_dirty='\[\e[0m\]'

如果不行。查看您是否有权访问 tput 并从中获取所需的颜色。或者最后你可以尝试使用 ANSI 转义序列

也许尝试在终端中使用 printf:

试验 ANSI 转义序列
printf "3[32m This will appear green on most terminals\n"

printf "3[31m This will appear red on most terminals\n"

我发现 tput setaf 对我来说效果很好。文档 here.

# A more colorful prompt
# \[\e[0m\] resets the color to default color
c_reset=$(tput setaf 0)
#  \e[0;31m\ sets the color to purple
c_path=$(tput setaf 55)
# \e[0;32m\ sets the color to green
c_git_clean=$(tput setaf 2)
# \e[0;31m\ sets the color to red
c_git_dirty=$(tput setaf 9)

要查看所有颜色,我 运行 该文档中的脚本之一:

for C in {0..255}; do
    tput setaf $C
    echo -n "$C "
done
tput sgr0
echo

那么无论你想要什么颜色,你都知道在'tput setaf '

之后插入的数字

旁注:看起来我们有相同的 bash_profile 来源。我还发现升级到 El Capitan 会破坏它。您还可以通过在此行中间添加分号来修复路径颜色:

# PS1 is the variable for the prompt you see everytime you hit enter
PROMPT_COMMAND=$PROMPT_COMMAND'; PS1="${c_path}\W${c_reset}$(git_prompt) :> "'

这似乎也修复了我的路径名颜色。 :)