【问题标题】:Error running shell script using bash and node.js使用 bash 和 node.js 运行 shell 脚本时出错
【发布时间】:2016-05-14 00:07:06
【问题描述】:

我在运行以下 shell 脚本 (myscript.sh) 时收到以下错误 (error.message)。

脚本文件
#!/bin/bash
cd /path/to/ && node app.js
错误信息

/path/to/myscript.sh: line 1: #!/bin/bash: No such file or directory

/path/to/myscript.sh:第 2 行:节点:找不到命令

我已经运行了以下命令行指令。

命令行
chmod u+x /path/to/myscript.sh
chmod u+x /path/to/app.js

另外,我知道我已经安装了节点,因为当我运行时:

node -v

我回来了:

v5.5.1

我通过以下 AppleScript 执行 myscript.sh

MyApp.applescript
do shell script "bash /path/to/myscript.sh"

另外:which bash 返回/bin/bash

什么可能导致此错误,我该如何解决?

【问题讨论】:

  • 如果将cd /path/to/ && node app.js 分成两行会怎样?
  • 还有,myscript.sh的执行情况如何?
  • @the_velour_fog:我得到了同样的结果。同样的错误信息。
  • 你不是想source myscript吗?,你应该执行它
  • @Mowzer Unix/Linux 和 mac os x 使用 LF(新行)但 windows CRLF(回车)来指示文本文件中每一行的结尾。如果设置不正确,可能会在执行时导致异常行为。看起来你有正确的行尾。我可以说的最后一件事是尝试检查您的文件编码是否为 UTF-8。

标签: node.js bash shell


【解决方案1】:

我修复了第一个错误:

/path/to/myscript.sh: line 1: #!/bin/bash: No such file or directory

通过复制我机器上的工作 .sh 文件并将代码从旧文件复制/粘贴到新文件。

尽管我在文件名中使用了.sh 扩展名,但我猜测还是存在文件类型问题或差异。

以后,我会在我的 Finder 实用程序 (Max OS X v10.10.1) 中仔细检查文件类型。

但是,我仍然看到第二个错误:

/path/to/myscript.sh:第 2 行:节点:找不到命令

【讨论】:

  • 将第 2 行更改为 /path/to/node app.js
  • @HeadCode:错误:No such file or directory
  • 您确实将 /path/to/node 更改为您机器上节点的真实路径,对吧?
  • @HeadCode:哈哈。谢谢你的提问。显然,不,我没有。我怎样才能找到它?
  • which node 应该为您提供节点二进制文件的路径。
【解决方案2】:

感谢 @HeadCode 和 @mh-cbon 帮助我用他们的 cmets 解决这个问题。

我通过运行解决了第二个问题:

我的shell.sh
#!/bin/bash
path/to/node path/to/app.js

通过运行找到路径/到/节点的位置

命令行
which node

path/to/app.js 是 app.js 的实际文件树路径。 (换句话说,与路径/到/节点不同。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 2021-07-16
    • 2018-04-17
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多