输入不存在的命令后终端关闭

输入不存在的命令后终端关闭

这似乎是一个错误,但我不确定应该在哪个软件包上报告它。试试这个:

  • 打开 gnome 终端
  • shift- ctrl- t(打开新标签)
  • 类型:foo foo &
  • 标签已关闭

正确的行为是Command not found

在 gnome-terminal 上每次都会发生这种情况。在 xterm 上(当然没有标签)它会随机工作 - 可能试过 2 到 3 次。

答案1

让我猜猜,您的( )中有一个set -e(或它的长格式set -o errexit)选项。.bashrc.bash_profile

-e

如果管道(可能由单个简单命令), A子壳 括号内的命令,或括号内的命令列表中执行的命令之一(请参阅 Shell 语法以上)以非零状态退出。如果失败的命令是紧跟在 尽管或者直到关键字,测试的一部分,如下如果或者elif保留字,是执行的任何命令的一部分&&或者|| 列出除最后一条命令之外的命令 &&或者||、管道中的任何命令(最后一个命令除外),或者命令的返回值被反转. 陷阱如果设置了 ,则在退出 shell 之前执行。此选项分别适用于 shell 环境和每个子 shell 环境(请参阅命令执行环境以上),并且可能导致子shell在执行完子shell中的所有命令之前就退出。

— bash(1)

这个选项对于一些脚本非常有用——它允许避免大量的|| exit 1,例如

cd /var/ || exit 1
tar -cvf myarchive.tar "$SOMEDIR" || exit 1
rm -r "$SOMEDIR"

你可以写

set -e
cd /var/
tar -cvf myarchive.tar "$SOMEDIR"
rm -r "$SOMEDIR"

但是当然没有任何理由将其设置为交互式 bash 会话。

答案2

检查并验证您没有某些 bashrc 或配置文件配置来改变此实例的正常行为。

验证这一点的最佳方法是备份您当前的 bashrc 和配置文件,然后用这两个文件的原始副本替换活动文件。注销然后重新登录并检查是否仍然有此行为。

如果这能解决此缺陷,请仔细添加您的自定义配置,并在缺陷再次出现时记下最后所做的更改。

相关内容