我已经mill
在 arch linux 上安装了 fish 作为我的默认 shell。由于文件/usr/bin/mill
不是以 shebang 开头的,fish 不会执行该文件。相反,它响应
$ mill
Failed to execute process '/usr/bin/mill'. Reason:
exec: Exec format error
The file '/usr/bin/mill' is marked as an executable but could not be run by the operating system.
我可以执行 mill withbash -c 'mill'
但我不想一直这样做。我也不想将其添加为 Mill 的别名。当脚本中没有shebang而不是失败时,是否可以将fish配置为始终使用sh或bash?或者可能存在操作系统级别的问题?
编辑: 米尔只是一个例子。我用不同的脚本多次遇到鱼的这个特性,我不应该编辑这些脚本。这就是为什么我正在寻找一种方法来永远避免使用该功能,而不是一次性修复。
你不能那样做。
你可以查看它的源代码:
请注意它是如何使用
execve
(notexecvp
or ,在 的情况下execlp
有一个回退到的) 并且它只会在脚本以( 本身是一个非常可疑的功能开始时运行脚本;特别是因为在其他错误的情况下也会使用它比)。/bin/sh path
ENOEXEC
/bin/sh
:
fish
ENOEXEC
但是,如果您可以编辑脚本以
:
在开头添加 a,您也可以编辑它以添加适当的 she-bang。