화면에서 'Myscript.sh'를 실행할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

화면에서 'Myscript.sh'를 실행할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

스크린 세션에서 원격 컴퓨터의 스크립트를 실행하기 위해 ssh를 사용하려고 합니다. 내가 사용하는 명령은 다음과 같습니다

ssh -t MYSERVER "cd tempdirXYZ; screen Myscript.sh"

이렇게 하면 몇 초 동안 화면 창이 나타나는 것을 볼 수 있습니다.

cannot exec 'Myscript.sh': No such file or directory

저는 원격 컴퓨터에서 bash를 사용하고 있으며 ~/bin 폴더에 스크립트를 배치했습니다. 위 명령을 실행할 때 bash 파일을 가져오지 못하는 것 같습니다. bash가 실행되고 있는지조차 확신할 수 없습니다.

명령을 변경하지 않고 이 작업을 수행할 수 있는 방법이 있습니까? 원격 컴퓨터가 Ubuntu를 실행 중입니다.

답변1

방금 당신이 /bin이 아니라 ~/bin이라고 말했다는 것을 깨달았습니다.

시스템의 PATH 변수에 디렉터리를 추가하려면 다음 명령을 실행해야 합니다.

export PATH=\$PATH:/home/<username>/bin

이를 통해 위의 스크립트를 실행할 수 있습니다. 그렇지 않은 경우 실행 가능으로 표시되지 않았을 수 있으므로 다음을 실행하십시오.

chmod +x ~/bin/Myscript.sh

답변2

명령을 변경할 수 없다면 할 수 있는 일이 별로 없습니다. ~/.bashrc이 명령을 실행하는 동안 파일이 처리되어야 합니다 .

아마도 무슨 일이 일어나고 있는지는 당신이조건부 종료문일반적으로 시작 부분 근처의 .bashrc에서 현재 셸이 비대화형(이 경우 비대화형)임을 감지하면 종료됩니다. 때때로 스크립트는 기본 프롬프트 변수 PS1이 설정되어 있는지 확인합니다. 이는 대화형 쉘과 비대화형 쉘을 평가하는 일반적이지만 추악한 방법입니다. 이 경우 PS1이 설정되지 않으면 나머지 .bashrc는 구문 분석되지 않습니다.

이것이 사실인지 확인하겠습니다. 몇 가지 간단한 디버깅 기술을 사용하여 .bashrc가 소스인지, 조기에 끝나는지(예: echo 문) 확인합니다. 이 문제를 해결하려면 원격 시스템에서 .bashrc를 수정해야 하며, 이로 인해 scp 및 sftp와 같은 다른 기능이 중단될 수 있습니다. 또는 원격 명령으로 PS1을 설정할 수 있습니다.

원격 명령을 수정할 수 있는 경우 몇 가지 해결 방법이 있습니다.

  1. 스크립트를 실행하는 데 필요한 항목을 별도의 bash 파일에 추가합니다. 명령으로 직접 가져옵니다.
  2. 명령 및 원격 스크립트에서 전체 경로를 사용하십시오. PATH 외에 어떤 다른 환경 종속성이 있는지는 모르지만 분명히 이러한 종속성도 해결해야 합니다.
  3. 원격 시스템에 ~/.ssh/environment필요한 모든 환경 변수, 별칭, 함수 등을 채웁니다. 이 설정이 활성화 /etc/ssh/shhd되도록 SSH 구성 파일을 수정하십시오 PermitUserEnvironment. 그렇지 않으면 작동하지 않습니다.
  4. 명령에 환경 변수 설정을 추가하면(예: "export PATH=\$PATH:/home/you/bin;..."이스케이프) PATH추가하려는 원격 버전이 확인되어 명령이 전송되기 전에 확장이 방지됩니다.

위 방법 중 어느 것도 효과가 없으면 제한사항을 더 자세히 설명해 주세요.

답변3

인식되는 파일 형식을 확인하세요.

file myscript.sh

사용자 + 실행 권한 설정

chmod u+x Myscript.sh

관련 정보