>  기사  >  Java  >  Unix 명령을 실행할 때 JSch에서 '명령을 찾을 수 없음' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Unix 명령을 실행할 때 JSch에서 '명령을 찾을 수 없음' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

DDD
DDD원래의
2024-11-14 11:16:02988검색

Why Does JSch Throw a

JSch를 사용하여 Java를 통해 Unix 명령을 실행할 때 "명령을 찾을 수 없음" 오류 문제 해결

문제:

Java 코드를 사용하여 JSch가 "명령을 찾을 수 없음" 오류로 인해 특정 Unix 명령을 실행하지 못합니다. 다른 간단한 명령을 성공적으로 실행할 수 있음에도 불구하고. 특히 "air sandbox run" 명령을 사용하여 Java를 통해 Ab-initio 그래프를 실행하면 오류가 발생합니다.

가능한 원인:

JSch "exec" 채널은 오류를 발생시킵니다. 기본적으로 PTY(의사 터미널)를 할당하지 않으므로 다른 시작 스크립트 세트가 소스로 제공되거나 TERM이 없을 때 스크립트의 다른 분기가 수행됩니다. 환경 변수. 결과적으로 환경이 대화형 SSH 세션과 다를 수 있으며 잠재적으로 PATH 문제가 발생할 수 있습니다.

해결책:

  1. 명령을 수정하세요. : PATH 환경에 의존하지 않으려면 명령 문자열에 "air" 실행 파일의 전체 경로를 사용하세요. 변수.
  2. 시작 스크립트 수정: 시작 스크립트가 대화형 세션과 비대화형 세션 모두에 대해 PATH를 동일하게 설정하는지 확인하세요.
  3. 로그인 셸을 사용하세요. 로그인 셸("--login" 스위치 사용)을 통해 명령을 실행하여 현재 사용자의 환경.
  4. 환경 수정: "air" 실행 파일에 대한 경로를 포함하도록 명령 문자열 내의 PATH 환경 변수를 변경합니다.
  5. PTY 할당 강제 (권장되지 않음): setPty(true) 메소드를 사용하여 "exec" 채널에 대한 의사 터미널 할당을 활성화합니다. 그러나 이로 인해 의도하지 않은 결과나 부작용이 발생할 수 있습니다.

추가 참고 사항:

  • SSH 클라이언트에서 의사 터미널 할당을 비활성화하면 재현이 가능합니다.
  • 기타 유사한 문제로는 SSH 터미널과 JSch에서 다르게 동작하는 명령 및 어려움이 있습니다. 사용자 환경 변수를 "exec" 채널에 노출합니다.

위 내용은 Unix 명령을 실행할 때 JSch에서 '명령을 찾을 수 없음' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.