我一直想定製我的bash 提示,以便它會像
┌─[error_code_if_not_zero]─[time_short]─[username]─[current_folder]─[git_branch]
└─▪
這裏是我的.bashrc
:
# command completion
source /home/falcon/.bin/git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWUPSTREAM="auto"
# function to generate the prompt
function __prompt_command() {
__exit_code="$?"
__error_int="";
if [ $__exit_code -ne 0 ]; then
__error_int="[\[\e[0;31m\]$__exit_code\[\e[0;37m\]]─"
fi
PS1="\[\e[0;37m\]┌─$__error_int[\A]─[\[\e[0;35m\]\u\[\e[0;37m\]]─[\[\e[0;33m\]\w\[\e[0;37m\]]\$(__git_ps1 '─[\[\e[0;31m\]%s\[\e[0;37m\]]')\n\[\e[0;37m\]└─▪ \[\e[0;m\]"
}
export PROMPT_COMMAND=__prompt_command
這種配置工作得很好,它顯示了錯誤代碼爲非零時。但麻煩來臨,我只是在終端中按enter
(調用空命令) - 返回值保持與最後一個非空命令的返回值相同。例如,發生這種情況時,我只是在終端按enter
:
┌─[127]─[02:51]─[falcon]─[~]
└─▪
┌─[127]─[02:51]─[falcon]─[~]
└─▪
┌─[127]─[02:51]─[falcon]─[~]
└─▪
┌─[127]─[02:51]─[falcon]─[~]
└─▪
正如你所看到的,error code 127
即使是空的命令後仍然存在。 但我希望是這樣的:
┌─[127]─[02:51]─[falcon]─[~]
└─▪
┌─[02:51]─[falcon]─[~]
└─▪
┌─[02:51]─[falcon]─[~]
└─▪
┌─[02:51]─[falcon]─[~]
└─▪
所以,我的問題是,如何清空的$?
功能__prompt_command
裏面的價值?
那麼,我已經花了很長時間看這個,並沒有解決方案。問題在於範圍 - 在標記爲「可能重複」的變量中,在* users *環境中設置了變量,因此它仍然存在。在上面的問題中,PS1設置在每次需要提示時運行的*函數*中。由於在調用函數時沒有變量存在,我所能想到的唯一解決方案涉及臨時文件,這只是不切實際的。 :( – vastlysuperiorman