【问题标题】:Problems with calling bash scritpt from octave in ubuntu在 ubuntu 中从 octave 调用 bash 脚本的问题
【发布时间】:2020-10-24 22:05:57
【问题描述】:

我试图运行一个脚本,该脚本调用一个八度之外的程序。从终端调用该脚本时工作正常。我的问题是脚本的 shebang 部分似乎没有调用 bash。例如,如果我编写以下脚本:

#! /bin/bash
echo $SHELL
whoami

当我将这个脚本称为八度时

system('bash myscript.bash')

我明白了:

>> /bin/sh
>> user

因此,当我尝试从 octave(不是上面的那个)运行实际脚本时,我收到“找不到命令”错误。 知道我在这里做错了什么吗?

【问题讨论】:

  • from octave (not the one above) 那么如果不是上面的,那你怎么调用实际的脚本呢?你为什么要展示以上内容?
  • 请添加到您的脚本中:echo "$BASH_VERSION".
  • 你不应该在 shebang 和 bash 路径之间留一个空格。此外,您不需要在系统调用中调用 bash 。只需使您的脚本可执行并直接调用它。
  • 5.0.11(1)-发布
  • 可执行,尝试直接调用但没有区别。

标签: bash shell terminal octave ubuntu-20.04


【解决方案1】:

发现问题是我用 flatpack 安装了 Octave,它创建了自己的环境或其他东西,因此无法真正看到 /bin 中的功能。所以如果你有类似的问题,比如在 Octave 命令行和终端中没有相同的功能:

flatpak uninstall octave
sudo apt-get install octave

【讨论】:

    【解决方案2】:

    请尝试

    system('./myscript.bash')

    system('/bin/sh /root/path/to/myscript.bash')

    在您的 bash 脚本中使用程序的绝对路径,或者您可以将程序放在 /bin 目录中

    路径示例: /root/path/to/myscript.bash

    【讨论】:

    • 我仍然得到相同的输出 >> /bin/sh >> 用户
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多