使用bash脚本ssh远程计算机时找不到命令

时间:2017-08-25 13:53:39

标签: linux bash shell ssh

我正在尝试编写一个bash脚本,我是一个新手。

除了某些特定命令给我错误

之外,其他所有内容都在工作
./start_components1.sh: line 17: cmd1: command not found

它们是我机器的一些特定命令,我认为它们与某种方式有关,当我通过bash脚本进入机器时,环境未加载。我错了。

无论如何,如果我从终端正常进入我的机器然后执行命令它会正常工作。

当我尝试通过bash脚本执行相同操作时,它会告诉我找不到命令。

我搜索了很多东西并尝试了不同的东西。没有任何效果。

这是我的脚本,如果可以提供帮助:

#!/bin/bash

USERNAME=odroid

while getopts r:d:p:f: option
do
 case "${option}"
 in
 r) ROBOT=${OPTARG};;
 esac
done

for HOSTNAME in ${ROBOT}; do    
    ssh -l ${USERNAME} "robot${HOSTNAME}" "./start_components${HOSTNAME}.sh; ls"    
done

编辑:我认为它正常工作在按照@PauloScardine的提示后,我也意识到我的文件的权限未设置为可执行文件,因此我sudo chmod +x fileToExecute 我认为这解决了我的问题但是: 它仍然无法正常工作。该命令执行没有任何错误(似乎)但它们并没有真正执行。示例:如果我在我的机器上使用ssh(没有bash脚本)并且/opt/openrobots/bin/pom-ros我看到我要启动的组件已启动,我得到一些输出等等。当我启动应该启动start_components2.sh的{​​{1}}文件时,我看不到任何输出,我确信该组件未启动,因为我没有效果:(

提前致谢

1 个答案:

答案 0 :(得分:-1)

未找到命令通常意味着,当您使用点执行时,它无法在当前目录中找到它。

尝试为脚本添加完整路径。类似的东西:

ssh -l ${USERNAME} "robot${HOSTNAME}" "/home/${USERNAME}/start_components${HOSTNAME}.sh; ls"

但是,只有当脚本start_componets位于$ {USERNAME}变量

后面的用户的主目录中时,这才有效