虽然不太可能是 OP 的问题,但如果您的 shebang 具有该角色,则可能会出现一个足够相似的错误消息 - 它把我带到这里。在我的情况下,脚本仍然执行,但错误非常烦人 - 特别是因为我正在帮助某人完成他们的“官方”程序并且在这种情况下错误是不受欢迎的。
示例输出:
CS-015: # /bin/ksh check.sh
check.sh[1]: #!/bin/ksh: cannot execute - No such file or directory
check.sh
由于 cat 显示为:
$ cat check.sh
#!/bin/ksh
THIS_SCRIPT="$(basename $0)"
echo "$THIS_SCRIPT"
exit 0
# Nothing else matters; I had narrowed it to here...
在这种情况下,我继承了该文件并且 hexdump 显示:
$ hexdump -C check.sh
00000000 ef bb bf 23 21 20 2f 62 69 6e 2f 6b 73 68 0a 0a |...#! /bin/ksh..|
00000010 54 48 49 53 5f 53 43 52 49 50 54 3d 22 24 28 62 |THIS_SCRIPT="$(b|
...
正如Stéphane Chazelas在https://unix.stackexchange.com/a/381263/17300建议的那样,您可以使用 sed 删除它:
$ sed -i '1s/^\xEF\xBB\xBF//' check.sh