从路径(脚本名,而不是“sh 脚本名”)执行脚本时,我收到以下错误:
-bash:./gitup:/bin/bash/:错误的解释器:不是目录
同一目录中的所有其他脚本均能顺利执行,手动执行脚本 (sh scriptname) 时不会遇到此问题,只有单独执行脚本时才会遇到此问题。因此,脚本本身似乎不是问题,因为它确实可以正常执行,直到我打开新的 shell 会话并仅遇到此脚本的此错误时才如此。
该脚本是可执行的,包含按照我描述的方式执行的所有必需行(它在今天早些时候之前运行正常)并且可以由我的用户执行,所以我不确定问题可能是什么。
shebang 行显示为 #!/bin/bash。我使用命令“export PATH=$PATH:repos/utilities”指向存储这些脚本的目录,除此以外,所有脚本都只需调用脚本名称(即 gitup)即可执行。
答案1
我能想到一些事情。
您说您的脚本位于 $PATH 中,但您使用其完整路径调用它(
./gitup
而不是仅使用gitup
)。 可能是您编辑了脚本的一个版本(例如,位于 $PATH 中的版本~/bin/gitup
),然后执行了另一个版本(./gitup
)?你的 $PATH 中可能会有多个版本吗?你可以使用以下命令进行检查
which -a gitup
您可能在编辑脚本时无意中输入了一个奇怪的不可见字符。使用以下命令检查 shebang 行
od
:head -1 ./gitup | od -c
#!/bin/bash
确保换行符 ( )后面没有任何内容\n
。它应该如下所示:0000000 # ! / b i n / b a s h \n 0000014
答案2
检查 shebang ( #!
) 行,确保它显示
#!/bin/bash
并不是
#!/bin/bash/
如果它看起来像第二个示例,请将其更改为第一个。
编辑(回应这评论)
如果这个问题只限于一个脚本,请复制此脚本,然后开始从中删除代码,并制作一个仍显示此问题的最小脚本。然后发布该最小脚本。