我的命令行/终端上的[SIGINT]是什么意思?

问题描述

有时,当我在终端上工作时,[SIGINT]出现在我的插入符号之前。

  1. 这是什么意思?
  2. 为什么键入ls删除标记

Image containing [SIGINT]

环境

我使用的是Ubuntu 20.04,并以fish作为外壳程序。

解决方法

这意味着您开始的最后一件事是通过接收SIGINT信号而被杀死的,这通常是在按ctrl-c时发生的情况。

运行ls会删除它,因为l只是运行到完成,所以现在最后一件事并没有被信号杀死。

Fish的默认提示会显示此信息,因为它很有用,例如如果程序崩溃,它将显示SIGABRT或类似内容。

要删除它,您可以使用fish_config从示例中选择一个没有提示的提示,或者通过修改fish_prompt函数来制作自己的提示,例如通过

funced fish_prompt
# try it out,once you are happy run
funcsave fish_prompt
,

如果它是bash,那么我想说有人配置了bash函数来在生成提示时运行。您可以使用PS1环境变量来完成各种奇妙的事情。但是,正如您所说的,您使用fish作为外壳程序,因此它不是PS1环境变量。

此{em>似乎是在fish中的标准行为,至少在未经修改的Ubuntu 20.04下是这样,如以下抄本所示,其中我 CTRL-C sleep命令:

pax@paxbox ~> sleep 3600                # will ctrl-c this.
^C
pax@paxbox ~ [SIGINT]> true             # successful exit.
pax@paxbox ~> false                     # failed exit.
pax@paxbox ~ [1]>
pax@paxbox ~ [1]> fish -c 'exit 42'     # arbitrary exit value.
pax@paxbox ~ [42]>

您可以通过查看functions fish_prompt的输出来了解为什么这样做,因为调用该函数可以在该shell中生成提示:

# Defined in /usr/share/fish/functions/fish_prompt.fish @ line 4
function fish_prompt --description 'Write out the prompt'
    set -l last_pipestatus $pipestatus
    set -l normal (set_color normal)

    # Color the prompt differently when we're root
    set -l color_cwd $fish_color_cwd
    set -l prefix
    set -l suffix '>'
    if contains -- $USER root toor
        if set -q fish_color_cwd_root
            set color_cwd $fish_color_cwd_root
        end
        set suffix '#'
    end

    # If we're running via SSH,change the host color.
    set -l color_host $fish_color_host
    if set -q SSH_TTY
        set color_host $fish_color_host_remote
    end

    # Write pipestatus
    set -l prompt_status (__fish_print_pipestatus " [" "]" "|" (set_color $fish_color_status) (set_color --bold $fish_color_status) $last_pipestatus)

    echo -n -s (set_color $fish_color_user) "$USER" $normal @ (set_color $color_host) (prompt_hostname) $normal ' ' (set_color $color_cwd) (prompt_pwd) $normal (fish_vcs_prompt) $normal $prompt_status $suffix " "
end

在最后一条命令被中断时(或为正常完成而添加了任何非零的退出代码),设置为prompt_status的末尾行将[SIGINT]添加到正在输出的提示中。

如果要更改该功能的行为,则可以制作自己的副本:

mkdir -p ~/.config/fish/functions
function fish_prompt >? ~/.config/fish/functions/fish_prompt.fish

然后进行所需的任何更改。