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

时间:2015-10-06 21:51:53

标签: bash terminal osx-elcapitan github-for-mac

我最近更新了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目录的“工作”分支上。任何不在github上的东西看似正常。

Downloads:> 

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

Screenshot of Terminal

2 个答案:

答案 0 :(得分:1)

我发现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

然后,无论您想要什么颜色,您都知道在输入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) :> "'

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

答案 1 :(得分:0)

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

# 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 "\033[32m This will appear green on most terminals\n"

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