【问题标题】:Why am I getting ": No such file or directory" when trying to execute a bash script?为什么我在尝试执行 bash 脚本时得到“:没有这样的文件或目录”?
【发布时间】:2012-03-27 22:16:18
【问题描述】:

我正在尝试执行 bash 脚本 (git-ftp),但我似乎做不到。这就是发生的事情:

[trusktr@rocketship ~]$ ~/scripts/git-ftp
: No such file or directory

该文件的权限为 755。

这是脚本的内容:http://pastie.org/3567556

为什么会出现此错误?我可以做些什么来解决这个问题?

【问题讨论】:

标签: git bash shell


【解决方案1】:

脚本中是否有#!(hash bang)行,路径名是否解析?

如果脚本正在运行,则可能是脚本中的某些内容。将此命令添加到脚本顶部,在任何其他命令之前(当然在哈希爆炸之后,如果有的话):

set -x   # enable trace mode

【讨论】:

  • 是的,如果你看一下脚本,它的顶部有“#!/usr/bin/env bash”。我尝试添加set -x,但没有发生任何新情况。
  • 试试bash -x ~/scripts/git-ftp 看看有没有什么发现。 FWIW 脚本运行良好,我打印使用消息
  • 感谢您帮助我。事实证明@joesdiner 完全正确:我需要将所有行尾转换为 unix 样式。
【解决方案2】:

如果脚本具有 windows 行结尾而不是 unix 行结尾,我会看到此错误。尝试在脚本上运行dos2unix,看看是否会遇到同样的错误。

【讨论】:

  • 哇,有趣。就是这样。
  • 您的意思是冒号的确切错误::没有这样的文件或目录。说得通;一个空的命令。它实际上不是空的,但字符串 "\r" 打印时前导回车消失了,因为在您的 Unix 终端上它只是将光标移动到第 0 列。
  • @Kaz:比这更复杂。脚本中的 shebang 行是 #!/usr/bin/env bash\r,因此 env 会打印错误“env: bash\r: No such file or directory”。回车使第二部分(“:没有这样的文件或目录”)覆盖第一部分,因此您看不到第一部分。 (附注:很好发现,joesdiner。)
猜你喜欢
  • 1970-01-01
  • 2017-06-16
  • 2019-05-23
  • 2020-05-09
  • 2017-08-06
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多