ssh : EOL을 통해 명령을 전달할 때 $ PATH를 설정하지 않습니까?


0

원격 서버에서 실행하려는 배포 스크립트가 있는데 서버에 연결하고 수동으로 명령을 올바르게 실행하면 다음과 같습니다.

ssh root@server
cd /some-deploy-folder
node do-something.js

그러나 내가 ssh에 대한 하나의 명령으로 그것을 전달함으로써 똑같이하려고한다면 :

ssh -t root@localhost <<EOF
  cd /some-deploy-folder
  node do-something.js     
  exit
EOF

배쉬는 node 명령보고 node: command not found

거기에 몇 가지 이유가 있습니까? EOL 명령을 직접 ssh 환경을 올바르게 설정하지 않았습니까?

답변:


1

문제는 명령을 보내고 직접 로그인하지 않고 쉘이 비대화 형이고 환경이 동일하지 않다는 것입니다. 자세한 내용은 다음을 참조하십시오.

https://askubuntu.com/questions/698957/ssh-into-a-machine-and-then-launch-an-interactive-command-line-program

다음은 쉘 유형에 대한 자세한 정보입니다.

https://unix.stackexchange.com/questions/50665/what-is-the-difference-between-interactive-shells-login-shells-non-login-shell

https://unix.stackexchange.com/questions/38175/difference-between-login-shell-and-non-login-shell


1
감사합니다. 대화식 모드에서 bash를 시작하여 문제를 해결했습니다. ssh root@server "bash -i -c 'node /some-deploy-folder/do-something.js"
ant-fx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.