SSH 스크립트는 전체 경로 변수에 액세스할 수 없습니다.

SSH 스크립트는 전체 경로 변수에 액세스할 수 없습니다.

ssh호스트 머신에 들어가서 echo $PATH:

$ ssh my@host
$ echo $PATH

내가 얻는 값은 $PATH스크립트를 로컬에서 실행할 때와 다릅니다.

ssh my@host '\
    echo $PATH;'

이유를 아시나요?

노트:ssh스크립트에서 [다른] CLI를 사용하면 전체 경로 변수를 가져오지 못하는 것 같습니다.

답변1

이는 ssh()를 통해 명령을 실행하면 ssh user@host 'command'비로그인 셸이 열리기 때문입니다. 로그인 쉘과 비로그인 쉘의 차이점에 대한 자세한 분석을 확인할 수 있습니다.이 문제에서. 본질적으로 문제의 원인은 ssh를 통해 명령을 실행할 때 명령에 ~/.bash_profile소스가 없기 때문에 경로에 대한 수정 사항을 사용할 수 없다는 것입니다.

~/.bashrc해결책은 비로그인 셸을 열 때 얻을 수 있는 파일로 파일을 옮기 거나, 발견한 대로 .bash_profile스크립트에서 직접 가져오는 것입니다.

답변2

bash 스크립트에 이 줄을 추가하면 작동합니다.

source ~/.bash_profile

원천

관련 정보