2012-04-21 4 views
2

을한다면 내가 SSH 명령을 통해 sbt을 실행하는 작업이 포함됩니다 뭔가를 할 노력하고있어,이 내가 노력하고있어입니다 작동하지 :SBT (스칼라) 찾았지만, 나 자신에게 그것을

나는 그러나, 나는 오류 메시지가 그렇게 할 때
ssh [email protected]<server ip> "cd <project folder>; sbt 'run-main Foo' " 

는 : bash: sbt: command not found

은 그 때 나는 프로젝트 폴더에 서버에 자신, cd를 SSH를 이동하고 sbt 'run-main Foo'을 실행하고 모든 것이 잘 작동합니다. sbtssh [email protected]<server ip> "echo $PATH"을 통해 원격 서버의 $PATH 변수에 있는지 확인하고 올바른 값을 표시합니다.

나는 이것이 간단한 수정이라고 느낀다. 그러나 그것을 이해할 수 없다. .. 도와주세요? 감사합니다. -kstruct

답변

5

로그인하면 bash이 대화 형 셸로 실행됩니다. ssh을 통해 직접 명령을 실행하면 bash는 비대화 형 쉘로 실행되므로 다른 초기화 파일이 원본으로 사용됩니다 (정확하게 bash 매뉴얼 페이지 참조). 이 문제를 해결하는 방법에는 여러 가지가 있습니다, 예를 들면 :

  • 편집 .bashrcssh
  • 을 통해 직접 호출 할 때 sbt의 전체 경로를 사용하고 PATH 환경 변수
에 누락 된 디렉토리를 추가

ssh [email protected]<server ip> "echo $PATH" 테스트는 큰 따옴표로 인해 실제로 서버가 아닌 클라이언트에 PATH을 인쇄합니다. ssh [email protected]<server ip> 'echo $PATH' 또는 ssh [email protected]<server ip> env을 사용하여 PATH을 서버 환경에서 인쇄하십시오. env을 사용하여 확인하면 PS1이 대화 형 셸에서만 설정됨을 알 수 있습니다.

관련 문제