3
如何在不中断行长计算的情况下将命令包含在Bash的PS1中?
Tonin 在我的默认提示中指出了一个错误。最小示例: 设置PS1: PS1='$(exit_code=$?; [[ $exit_code -eq 0 ]] || printf %s $(tput setaf 1) $exit_code $(tput sgr0) " ")$ ' 此时,提示如下所示: $ 现在通过运行触发退出代码输出: false 现在,提示在行首包含红色的退出代码: 1 $ 按Ctrl- r。 输入“ false”。现在,提示仅包含搜索: (reverse-i-search)`false': false 按Enter。 现在,最终的终端历史记录包含以下内容: 1 $ch)`false': false 预期产量: 1 $ false 也就是说,历史记录搜索输出似乎与提示混合在一起,并且隐藏了实际运行的命令。 我尝试通过使用PROMPT_COMMAND解决此问题: set_exit_code() { exit_code=$? [[ $exit_code …