【问题标题】:./install: function: not found - gpu-blast [duplicate]./install:功能:未找到-gpu-blast [重复]
【发布时间】:2019-03-29 01:19:58
【问题描述】:

我正在尝试在我的 ubuntu 14.04 上安装 gpu-blast (http://archimedes.cheme.cmu.edu/?q=gpublast) 并遇到此问题:

mar@mar-Lenovo-ideapad-Y700-15ISK:~/blast$ sh ./install 
install: 6: install: function: not found
-ne .
-ne .
-ne .
-ne .
-ne .
-ne .

我从这里做选项 2:http://thales.cheme.cmu.edu/gpublast/README 我试过 sudo 和 chmod 但结果是一样的。

【问题讨论】:

  • function 不是标准的 POSIX sh 语法;不应使用 sh 调用使用它的脚本。
  • ...也就是说,您似乎在 gpublast 的 README 中发现了一个错误,因为它指示使用 sh 运行实际上不符合 POSIX sh 标准的脚本.

标签: shell ubuntu-14.04 bioinformatics blast


【解决方案1】:

安装脚本是 bash 脚本? (没有 Ubuntu 系统,但如果我记得 Ubuntu 中的 sh 实际上只是一个符号链接破折号而不是 bash),试试 bash ./install

【讨论】:

  • 只要 bash 在名称 sh 下调用时尊重 function 关键字,这是其 POSIX 兼容模式不必要地允许的地方。
  • 我想说的是,他系统上的 sh 不是 bash,而是完全不同的实现(在 debian 上(我认为 ubuntu 是基于)的 /bin/sh 实际上是破折号,而不是bash。但正如我所说,我手头没有 ubuntu 系统,所以我无法验证这一点)。
  • 是的,我同意,但我的观点是,假设sh 支持 POSIX sh 标准中不存在的功能,无论它是否由dash 或 ash 或 ksh 或 posh 或 mksh 或 zsh 或任何其他 shell。即使它 bash,未来版本的 bash 也会在其规范内更忠实于 POSIX sh 标准的字母,并且在 POSIX 兼容模式下运行时不允许使用 function 关键字。
  • ...所以告诉人们将其视为 Ubuntu 问题或破折号问题有点误导 - 存在错误的地方是 gpublast README 指示某人使用 sh运行他们提供的依赖于非 POSIX 指定语法的脚本。
  • (...只是为了确保清楚,所以可以在上下文中阅读我之前的 cmets,以 sh 的名称启动 bash 启用 POSIX 兼容模式,所有差异都记录在 @987654321 @; 虽然当前版本的 bash 仍然 allow 在该模式下使用 function 关键字声明函数 - 而且,公平地说,将来可能会继续这样做 - 你会注意到当处于该模式时,它们发出以 POSIX 兼容格式定义的函数的序列化,前面没有 function 关键字)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 2020-03-17
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多