如何在 bash 中恢复“.sh”关联?

如何在 bash 中恢复“.sh”关联?

由于某些未知原因,我有一台 Debian 7 VM,其中没有 shebang 行 (#!/bin/sh) 的 .sh 文件不再由 bash 关联/执行,即在 bash 下,使用“test.sh”可执行 shell 脚本 (chmod'ed +x)

./test.sh

却什么也不做

sh test.sh

将使用 bash 执行脚本。

当存在 shebang 行时,就会执行脚本。

现在,即使没有 shebang,其他(理论上相似的)Debian 7 VM 上具有相同访问权限的完全相同的脚本文件也将使用“./test.sh”执行。

知道是什么原因造成这种差异吗?

编辑:在最后一批升级(2014-08-25 的 apt-get upgrade)并重启后,问题就消失了,之前我曾尝试过重启,但并没有解决问题。所以我猜 Debian 中修复了某些问题,尽管我不知道更新的软件包是什么。如果有人能解释一下修复了什么,我会给予奖励。

答案1

binfmt_misc该虚拟机上没有加载该程序,而其他虚拟机上却可以加载该程序。

在 Debian 上,通过binfmt-support包裹。

相关内容