2

だから私はsbtSSHコマンドを介して実行することを含む何かをしようとしています、そしてこれは私がしようとしていることです:

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と、対話型シェルとして実行されます。から直接コマンドを実行するとssh、bash は非対話型シェルとして実行されるため、さまざまな初期化ファイルが読み込まれます (正確には 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を使用して確認すると、がインタラクティブ シェルでのみ設定されenvていることがわかります。PS1

于 2012-04-21T21:47:51.410 に答える