设置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 -eq 0 ]] || printf %s $(tput setaf 1) $exit_code $(tput sgr0) " "
}
set_bash_prompt() {
PS1='$(set_exit_code)$ ' # Double quotes give the same result
}
PROMPT_COMMAND=set_bash_prompt
这似乎不起作用-搜索和运行后,该行看起来与之前完全相同。
我怎样才能解决这个问题?
1
这似乎是unix.stackexchange.com/a/71012
—
manatwork 2013年