GREEN="\e[1;32m"
RED="\e[1;31m"
NONE="\e[m"
get_exit_status(){
es=$?
if [ $es -eq 0 ]
then
echo -e "${GREEN}${es}${NONE}"
else
echo -e "${RED}${es}${NONE}"
fi
}
get_path(){
#dummy function
echo "PATH"
}
PROMPT_COMMAND='exitStatus=$(get_exit_status)'
以下は正しいexitStatusを私に与えますが、色変数は展開されません:
PS1='${RED}\h $(get_path) ${exitStatus}${NONE} '
ただし、以下のものは色を提供しますが、終了ステータスは更新されません。
PS1="${RED}\h $(get_path) ${exitStatus}${NONE} "
これを行う正しい方法は何ですか?exitStatusと色の両方が機能するようにこれを修正するにはどうすればよいですか?
\[
であり\1
、\[
です\2
。これらはRL_PROMPT_{START,END}_IGNORE
、画面上のプロンプトの長さを数えるときにバイトを無視するように求めるreadlineのものに対応しています。list.gnu.org/archive/html/bug-bash/2015-08/msg00027.htmlを参照してください。