[英]Underlining to bash prompt only when pwd changed
我只想在更改當前目錄時在bash shell提示符(= PS1)下划線。 我試過了
在.bashrc
文件中,我寫了
DIR_CHANGED=
function cd {
builtin cd "$@"
DIR_CHANGED=1
}
function dir_ul {
# if $DIR_CHANGED is 1, draw underline
if [ x == x$DIR_CHANGED ]; then echo -en '\033[0;34m'; else echo -en '\033[4;34m'; fi
export DIR_CHANGED=''
}
export PS1='$(dir_ul)\w$(tput sgr0)$ '
但是沒有用。
我該如何解決?
使用第二個外殼在〜/ .bashrc中進行測試:
PREV="$PWD"
PROMPT_COMMAND='[[ $PREV != $PWD ]] && PS1="$(tput smul)\w$(tput rmul)$ " && PREV="$PWD" || PS1="$(tput rmul)\w$ "'
我討厭這么說,但我會稱其為bash錯誤。 解決方法是:使用PROMPT_COMMAND復制$ DIR_CHANGED並將其重置,然后在dir_ul
引用該已保存的副本。 最小變化:
function dir_ul {
if [ x == x$DIR2 ]; then echo -en '\033[0;34m'; else echo -en '\033[4;34m'; fi
}
PROMPT_COMMAND='DIR2=$DIR_CHANGED;DIR_CHANGED='
$(dir_ul)
在設置PS1
變量的實例上進行評估,而不是不斷更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.