이것은 이전 기사의 연속입니다. 내 질문SSH를 통해 명령을 실행할 때 도트 파일을 가져오지 않습니다.(원본 게시물에는 600자만 허용되므로 충분한 정보를 추가할 수 없습니다. 틀렸다면 죄송합니다.)
한마디로: 내가 가지고 있다면세게 때리다Host1 및 Host2의 기본 쉘로
Host1에서 다음 명령을 실행하면:
ssh 호스트2 ~/some/path/somescript.py 작동하지 않습니다.
이 때문입니다전혀.-파일이 원격 호스트에서 발생하므로 내 PYTHONPATH가 설정되지 않고 = 명령이 실패합니다.
이는 문제의 짧은 버전으로 이어집니다.
아니요. 원격 호스트에서 bash를 실행할 때(즉, 비대화식으로) 얻는 파일입니다.
이를 시연하기 위해 원격 호스트에 다음 파일을 만들었습니다.
- .bash_login
- .bash_config 파일
- .bashrc
- . 윤곽
echo 명령을 첫 번째 줄에 추가합니다. 즉:
- .bash_login으로: echo ".bash_login에서 안녕하세요"
- .bash_profile로: echo "안녕하세요, .bash_profile에서"
- .bashrc로: echo ".bashrc에서 안녕하세요"
- .profile로: echo ".profile에서 안녕하세요"
하지만 내가 달려가서 말한다면
ssh name@host2 "ls ~/foo" "ls" 출력만 표시되고 에코 출력은 표시되지 않습니다.
왜 에코됩니까? 그 사람은 실제로 이렇게 말했습니다.
bash가 비대화형으로 시작될 때, 예를 들어 쉘 스크립트를 실행하기 위해 환경에서 변수 BASH_ENV를 찾아 거기에 나타나면 그 값을 확장하고 확장된 값을 파일로 사용하여 읽고 실행합니다. . 구현하다. Bash는 다음 명령이 실행된 것처럼 동작합니다: if [ -n "$BASH_ENV" ]; "$BASH_ENV"; fi이지만 PATH 변수의 값은 f를 검색하는 데 사용되지 않습니다.
즉, 그것은 보인다매뉴얼에 따르면Bash가 비대화식으로 시작되면 기본적으로 실행되는 .-file이 없습니다.
환경에서 설정해야 합니다. 파일을 얻으려는 경우 var-le "BASH_ENV"입니다.
하지만 이것은 불가능한 일처럼 보입니다. 소스 파일이 없기 때문에 BASH_ENV 또는 다른 것을 설정할 수 있습니까? ! ? ! ? ! ?
이건 미친 것 같아요. SSH를 통해 원격 시스템에서 비대화식으로 bash를 실행해야 하는 지구상의 유일한 사람입니까?
도와주세요. 미리 감사드립니다.
답변1
선택적으로 이러한 파일 중 하나를 가져온 다음 다음을 수행하여 동일한 ssh 호출에서 .py 스크립트를 실행할 수 있습니다.ssh user@host ". ./.dot-command && python_script.py