这似乎是一个错误,但我不确定应该在哪个软件包上报告它。试试这个:
- 打开 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 和配置文件,然后用这两个文件的原始副本替换活动文件。注销然后重新登录并检查是否仍然有此行为。
如果这能解决此缺陷,请仔细添加您的自定义配置,并在缺陷再次出现时记下最后所做的更改。