मैं अपने टर्मिनल में अधिक प्रासंगिक जानकारी प्रदर्शित करने के लिए एक कस्टम PS1 का उपयोग करता हूं, जैसे कि मैं एक git डायरेक्टरी में हूं और अगर यह साफ है या बदलाव करने की जरूरत है। हालांकि, कभी-कभी जब मैं कमांड के माध्यम से तीर चला रहा हूं, तो टर्मिनल लाइन का हिस्सा गायब हो जाता है:
@ ~/tests/testing [tests] > grunt
# up arrow, down arrow
@ ~/tests/testing [t
अनिवार्य रूप से, ests] >
कट जाता है और मैं बस साथ छोड़ दिया जाता हूँ [t
।
क्या कोई विशेष कारण है कि इस पीएस 1 विन्यास के साथ लाइन का हिस्सा क्यों कट रहा है?
यहाँ कुछ अतिरिक्त जानकारी है:
मेरा शब्द env var है xterm-256color
। ये रहा मेरा .bash_profile
:
red='\033[0;31m'
yellow='\033[0;32m'
orange='\033[0;33m'
blue='\033[0;34m'
pink='\033[0;35m'
NC='\033[0m'
function is_git {
if git rev-parse --is-inside-work-tree 2>/dev/null; then
return 1
else
return 0
fi
}
function stuff {
if [ $(is_git) ]; then
git_dir="$(git rev-parse --git-dir 2>/dev/null)"
if [ -z "$(ls -A ${git_dir}/refs/heads )" ]; then
echo -en " [${orange}init${NC}]"
return
fi
echo -n " ["
if [ $(git status --porcelain 2>/dev/null| wc -l | tr -d ' ') -ne 0 ]; then
echo -en "${red}"
else
echo -en "${blue}"
fi
echo -en "$(git rev-parse --abbrev-ref HEAD)${NC}]"
fi
}
export PS1="@ \w\[\$(stuff)\]\[\$(tput sgr0)\] > "
.bash_profile
tput
?
stuff
के stderr ls
को नहीं भेजा जाता है /dev/null
। यह न देखें कि यह कैसे प्रासंगिक है, लेकिन शायद इसे एक शॉट दें
TERM
वातावरण विविधता? और हैstuff
वास्तव में वास्तव में आपके पीएस 1 में क्या है, या यह एक प्लेसहोल्डर हैpwd
या कुछ और! धन्यवाद!