JSch를 사용하여 Java를 통해 Unix 명령을 실행할 때 "명령을 찾을 수 없음" 오류 문제 해결
문제:
Java 코드를 사용하여 JSch가 "명령을 찾을 수 없음" 오류로 인해 특정 Unix 명령을 실행하지 못합니다. 다른 간단한 명령을 성공적으로 실행할 수 있음에도 불구하고. 특히 "air sandbox run" 명령을 사용하여 Java를 통해 Ab-initio 그래프를 실행하면 오류가 발생합니다.
가능한 원인:
JSch "exec" 채널은 오류를 발생시킵니다. 기본적으로 PTY(의사 터미널)를 할당하지 않으므로 다른 시작 스크립트 세트가 소스로 제공되거나 TERM이 없을 때 스크립트의 다른 분기가 수행됩니다. 환경 변수. 결과적으로 환경이 대화형 SSH 세션과 다를 수 있으며 잠재적으로 PATH 문제가 발생할 수 있습니다.
해결책:
-
명령을 수정하세요. : PATH 환경에 의존하지 않으려면 명령 문자열에 "air" 실행 파일의 전체 경로를 사용하세요. 변수.
-
시작 스크립트 수정: 시작 스크립트가 대화형 세션과 비대화형 세션 모두에 대해 PATH를 동일하게 설정하는지 확인하세요.
-
로그인 셸을 사용하세요. 로그인 셸("--login" 스위치 사용)을 통해 명령을 실행하여 현재 사용자의 환경.
-
환경 수정: "air" 실행 파일에 대한 경로를 포함하도록 명령 문자열 내의 PATH 환경 변수를 변경합니다.
-
PTY 할당 강제 (권장되지 않음): setPty(true) 메소드를 사용하여 "exec" 채널에 대한 의사 터미널 할당을 활성화합니다. 그러나 이로 인해 의도하지 않은 결과나 부작용이 발생할 수 있습니다.
추가 참고 사항:
- SSH 클라이언트에서 의사 터미널 할당을 비활성화하면 재현이 가능합니다.
- 기타 유사한 문제로는 SSH 터미널과 JSch에서 다르게 동작하는 명령 및 어려움이 있습니다. 사용자 환경 변수를 "exec" 채널에 노출합니다.
위 내용은 Unix 명령을 실행할 때 JSch에서 '명령을 찾을 수 없음' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!