【发布时间】:2014-09-18 16:30:45
【问题描述】:
我想通过 ssh 运行一个需要特定环境的远程程序。因此,在执行程序之前,我会获取一个构建环境的特定文件。如果我直接登录到机器上,这没问题,但是当我通过 ssh 执行命令时
#!/bin/bash
foo=`ssh user@host "source ~/script.sh; ~/run/program"`
我收到一个错误,表明该脚本的来源不正确。您知道我必须做什么才能在同一会话中获取脚本来源和执行程序吗?
编辑: 我正在使用脚本导出 LD_LIBRARY_PATH 并且可执行文件抱怨它找不到共享对象文件。默认外壳是 bash。 “会话”是明确的,不是正确的措辞。我的意思是“终端环境”。
【问题讨论】:
-
"我收到一个错误,表明脚本的来源不正确。" 你需要比这更具体。请更新您的问题以显示 exact 错误消息(复制并粘贴它)。我刚刚尝试了一个类似的示例,并且成功了。
-
我编辑了上面的问题。 @KeithThompson:很高兴知道它原则上必须有效。我一直在努力……
-
您已描述错误消息。将确切的错误消息复制并粘贴到您的问题中会更有帮助。
-
执行程序时的错误就是
error while loading shared libraries: libCloudConnector.so.1: cannot open shared object file: No such file or directorysource 本身不会产生错误。 -
为了清楚起见,当您直接登录时,我假设它是同一用户 (
user),而您在这种情况下键入的命令是source ~/script.sh; ~/run/program,这有效吗?