我的命令 line/terminal 中的 [SIGINT] 是什么意思?
What does the [SIGINT] on my command line/terminal mean?
有时,当我在终端上工作时,[SIGINT]
会出现在我的插入符号之前。
- 这是什么意思?
- 为什么键入
ls
会删除该标记?
环境
我正在使用 Ubuntu 20.04,运行 fish
作为我的 shell。
如果是 bash
,我会说有人在生成提示时将 bash
函数配置为 运行。您可以使用 PS1
环境变量做各种美妙的事情。但是,正如您所说,您正在使用 fish
作为 shell,因此它不是 PS1
环境变量。
这 似乎 是 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]
,当最后一个命令被中断时(或添加任何 non-zero 退出代码正常完成)。
如果您想更改该函数的行为,您可以制作自己的副本:
mkdir -p ~/.config/fish/functions
function fish_prompt >? ~/.config/fish/functions/fish_prompt.fish
然后根据需要进行任何更改。
这意味着您启动的最后一件事已被 SIGINT 信号终止,这通常是您按下 ctrl-c 时发生的情况。
运行 ls
删除它,因为 ls 刚刚运行完成,所以现在最后一件事没有被信号杀死。
Fish 的默认提示会显示此信息,因为它很有用,例如如果程序崩溃,它将显示 SIGABRT 或类似信息。
要删除它,您可以使用 fish_config
从示例中选择一个没有它的提示,或者通过修改 fish_prompt
函数来创建您自己的提示,例如通过
funced fish_prompt
# try it out, once you are happy run
funcsave fish_prompt
有时,当我在终端上工作时,[SIGINT]
会出现在我的插入符号之前。
- 这是什么意思?
- 为什么键入
ls
会删除该标记?
环境
我正在使用 Ubuntu 20.04,运行 fish
作为我的 shell。
如果是 bash
,我会说有人在生成提示时将 bash
函数配置为 运行。您可以使用 PS1
环境变量做各种美妙的事情。但是,正如您所说,您正在使用 fish
作为 shell,因此它不是 PS1
环境变量。
这 似乎 是 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]
,当最后一个命令被中断时(或添加任何 non-zero 退出代码正常完成)。
如果您想更改该函数的行为,您可以制作自己的副本:
mkdir -p ~/.config/fish/functions
function fish_prompt >? ~/.config/fish/functions/fish_prompt.fish
然后根据需要进行任何更改。
这意味着您启动的最后一件事已被 SIGINT 信号终止,这通常是您按下 ctrl-c 时发生的情况。
运行 ls
删除它,因为 ls 刚刚运行完成,所以现在最后一件事没有被信号杀死。
Fish 的默认提示会显示此信息,因为它很有用,例如如果程序崩溃,它将显示 SIGABRT 或类似信息。
要删除它,您可以使用 fish_config
从示例中选择一个没有它的提示,或者通过修改 fish_prompt
函数来创建您自己的提示,例如通过
funced fish_prompt
# try it out, once you are happy run
funcsave fish_prompt