我有以下.bash_profile
#Change alias for ls to include colours
alias ls='ls -Gh'
#Enable git branch completion
source ~/git-completion.bash
#Allows git information to be visible in prompt
source ~/git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWCOLORHINTS=1
# ANSI colors: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
CYAN="\[\033[0;36m\]"
LIGHT_GREY="\[\033[0;37m\]"
DARK_GREY="\[\033[1;30m\]"
NO_COLOUR="\[\033[0m\]"
##################################
#Configure multiline prompt
# Prompt appearance should be:
#[RED]user@host[\RED] [CYAN]working_directory[\CYAN] git_branch [COLOUR_FROM_GIT]asterix_indicator[COLOUR_FROM_GIT] ==>
#==>
##################################
#This works for a multiline prompt and no colours
PS1='\[\033[0;31m\]\u@\h\\[\033[0m\] \[\033[0;36m\]\w\[\033[0m\] $(__git_ps1 "(%s)")==> \n==>'
根据git-prompt.sh文件,我应该在设置GIT_PS1_SHOWDIRTYSTATE
和GIT_PS1_SHOWCOLORHINTS
标志时看到颜色。如果有任何未提交的更改,我应该看到一个红色的星号。我只看到一个绿色的星号。
一旦发生这种情况,我就能得到红色的星号并保存了我的bash_profile。但是,当打开一个新终端时,我的更改已经消失。
任何想法原因:
$RED\u@\h$NO_COLOUR
,并且必须使用ASCII值。使用变量名时,它们将呈现为字符串。 source ~\.bash_profile
我正在使用OSX Sierra。
谢谢!
编辑:我已经接近我想要的地方了:PROMPT_COMMAND='__git_ps1 "\[\033[0;31m\]\u@\h\[\033[0m\]:\[\033[0;36m\]\w\[\033[0m\]" "\\\$ "'
我暂时放弃了为颜色使用变量名称。但是,如果我尝试在此插入换行符,例如:PROMPT_COMMAND ='__ git_ps1“[\ 033 [0; 31m] \ u @ \ h [\ 033 [0m]:[\ 033 [0; 36m] \ w [\ 033 [0m]“”\\ $ \ n $“'并将'$'替换为'==>'然后它打破了git分支信息。有什么建议吗?
答案 0 :(得分:2)
根据
git-prompt.sh
文件,我应该在设置时看到颜色GIT_PS1_SHOWDIRTYSTATE
和GIT_PS1_SHOWCOLORHINTS
标记。
在那个文件中你可以阅读(强调我的):
颜色基于" git status -sb"的彩色输出。仅在将__git_ps1用于PROMPT_COMMAND或precmd 时才可用。
因此,为了查看彩色提示,您需要将__git_ps1
用于PROMPT_COMMAND
。在脚本的顶部有一个如何执行此操作的示例:
PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'