1

我将 zsh 提示配置为根据最后一个命令的退出状态是零还是非零来显示不同的提示,其中

# Pimp my prompt.
PS1="%{${ESC}[38;5;204m%}%n%{$reset%}"                # Username
PS1="$PS1@%{${ESC}[38;5;104m%m$reset%}"               # @Machine
PS1="$PS1:%{${ESC}[38;5;78m%}%~%{$reset%}"            # :Directory
PS1="$PS1$NL%(0?,,%{${ESC}[38;5;0m${ESC}[48;5;162m%}%?%{$reset%} )" # Status
PS1="$PS1%(#.#.$) "                                   # Prompt

现在我想知道如果退出状态 > 128 是否可以让提示包含信号名称,即 129 包含HUP130INT等。我系统上的信号列表是(将信号编号从 1 增加到 32 <=>退出状态 129 到 160):

$ kill -l
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2 THR
4

1 回答 1

2

这应该可以做到,尽管您需要根据提示稍微自定义它。

get_exit_code() {
    # Grab the last exit status. 
    VALUE=$?

    if [[ VALUE -eq 0 ]]; then
        # Don't display anything if we got a clean exit code.
        echo ""
    else
        # Get the name of the exit code, then return.
        NAME=`kill -l ${VALUE}`
        echo "${NAME}"
    fi
}

# Use the function in our prompt.
export PROMPT=$'$ $(get_exit_code) '

这是我系统的示例输出:

$
$  return 3
$ QUIT return 129
$ HUP return 2
$ INT
于 2013-07-17T08:38:16.257 回答