2

所以我正在尝试做一些涉及sbt通过 SSH 命令运行的事情,这就是我正在尝试的:

ssh my_username@<server ip> "cd <project folder>; sbt 'run-main Foo' "

但是,当我这样做时,我收到一条错误消息:bash: sbt: command not found

然后我自己通过 SSH 进入服务器,cd进入项目文件夹,然后运行sbt 'run-main Foo',一切正常。我已经检查以确保它在远程服务器sbt上的变量上,并且它显示了正确的值。$PATHssh my_username@<server ip> "echo $PATH"

我觉得这是一个简单的修复,但无法弄清楚......帮助?谢谢!-kstruct

4

1 回答 1

5

当您登录时,bash它作为交互式 shell 运行。当您直接通过 运行命令时ssh,bash 将作为非交互式 shell 运行,因此需要获取不同的初始化文件(具体参见 bash 手册页)。有很多方法可以解决这个问题,例如:

  • sbt直接调用时使用完整路径ssh
  • 编辑.bashrc缺失的目录并将其添加到PATH环境变量中

请注意,由于双引号,您的测试实际上是在您的客户端而不是您的服务器上ssh my_username@<server ip> "echo $PATH"打印的。PATH使用ssh my_username@<server ip> 'echo $PATH'或从服务器环境ssh my_username@<server ip> env打印。PATH检查 usingenv时,您会看到PS1仅在交互式 shell 中设置。

于 2012-04-21T21:47:51.410 回答