尝试启动Linux Bash脚本时找不到命令

时间:2019-02-18 14:16:55

标签: linux bash

我有一个已经使用了一段时间的Bash脚本,名为launch.sh。该脚本启动了一组过程,该脚本如下所示:

for ch in job_lists/*; do
  merlin mkt -log 30 -rollList $ch > "output_$(basename $ch)" &
done

该脚本从job_lists获取一组6个作业,然后执行第2行,其中调用了另一个脚本merlin。启动脚本时,将以下内容返回到控制台:

enter image description here

我看起来它可以完成6个工作(因此有6行输出),但是我认为找不到merlin。...

我刚刚将环境移动到新笔记本电脑上,并复制了所有脚本。 merlin脚本在那里,我尝试了chmod +x launch.shchmod +x merlin.sh,但没有成功。我什至尝试在脚本顶部添加#!/bin/bash,但未成功。

merlin位于:

enter image description here

我已经检查了我的PATH(请参阅下文),我可能错过了一些东西,但看起来却存在到merlin的PATH(home / scoleman / user / bin)。

enter image description here

5 个答案:

答案 0 :(得分:3)

您必须指定脚本的路径。

尝试一下:

for ch in job_lists/*; do
    ./merlin.sh mkt -log 30 -rollList $ch > "output_$(basename $ch)" &
done

答案 1 :(得分:2)

这意味着您的merlin.sh脚本不在执行用户的PATH中。将脚本添加到路径已指向的位置,将脚本所在的目录添加到PATH,或从launch.sh脚本中指定脚本的完整路径。

答案 2 :(得分:2)

  1. 确保merlin拥有执行权限,如果没有设置的话,

    chmod + x merlin

  2. 请确保merlin脚本位于与launch.sh相同的位置,如果未提供merlin命令的正确路径,则

set_index(rec_df.columns[0])

或将merlin位置添加到PATH环境变量中。

rec_df = dfs_list[0].set_index(dfs_list[0].columns[0])
for dataframe in range(len(dfs_list)-1):
            rec_df = pd.merge(left=rec_df, right=dfs_list[dataframe+1].set_index(dfs_list[dataframe+1].columns[0]),
                              left_index=True, right_index=True,
                              how='outer')

答案 3 :(得分:1)

无需扩展即可运行它。

答案 4 :(得分:0)

$(which merlin)会显示什么?

如果获得正面结果,请将merlin替换为$(which merlin)。如果没有,请使用另一种方法找到其位置并在脚本中使用它。