Dash 因未知原因而运行

Dash 因未知原因而运行

我重启了我的 kubuntu 机器 - 如果有必要的话,从菜单重启leave->restart。通常我的终端窗口会在重启后自动打开,但这次我的提示是错误的,还有一堆其他奇怪的事情。

现在 /bin/sh 是 /bin/dash 的链接,dash 似乎已加载,但突然间它比重启前笨了很多。现在它无法识别是什么shopt。当我尝试点执行我的配置文件 ( . ~/.bash_profile) 时,我收到类似 的错误/bin/sh: 28: /etc/bash_completion: [[: not found。在命令行上,命令完成不起作用,命令历史记录的上下键也不起作用。

我并没有故意下载任何可能造成此问题的软件包。这突然发生的原因是什么?

现在我/bin/bash从终端的命令行执行,一切似乎都很好,但这并不能解释哪里出了问题dashbash据称,它比 dash 更重,而且由于我打开了 20 个左右的终端,如果这是真的,我想避免这种开销。

感谢您对此提出任何见解。

答案1

你不可能一直在使用 dash:

  • Dash 无法理解[[,因为它是 Bash 的内部命令之一。

  • Dash 不支持制表符补全。

  • Dash 不支持箭头键(编辑、历史记录)。

来源

唯一可能的解释是您的默认 shell 以某种方式发生了变化。我显然不知道这是怎么发生的,但我只能想到两种方法:

  • 某些内容编辑/etc/passwd并替换了您的默认 shell。这种情况极不可能发生。

  • 您通过符号链接访问 Bash(最有可能/bin/sh),并且最近的更新将符号链接设置为其默认目标。

虽然它确实,Bash 比 Dash 重,但这对于终端来说应该不是问题(Bash 的设计目的)。

但是,非交互式 shell 仍然应该默认使用 Dash(这就是为什么/bin/sh应该指向 Dash)。

相关内容