簡體   English   中英

僅當pwd更改時才向bash提示下划線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM