이 문제에 대한 많은 스레드를 읽었음에도 불구하고 이 문제를 파악할 수 없는 것 같습니다.
문제 요약
쉘 스크립트에서 원격 서버에 로그인하고 git 저장소를 가져온 다음 Node에 대한 절대 경로를 사용하여 "npm install"을 실행하려고 하면 "/usr/bin/env: 'node': 해당 파일 또는 디렉터리가 없습니다."라는 메시지가 표시됩니다.
세부 정보 및 연구 정보 제공
NVM을 사용하여 Node를 설치했습니다. 원격 서버에서 "어떤 노드"를 실행하면 "/root/.nvm/versions/node/v12.16.2/bin/node" 경로가 표시됩니다. SSH 키를 사용하여 루트로 원격 서버에 로그인합니다.
내 쉘 스크립트는 다음과 같습니다.
#!/bin/sh
ssh root@my-ip -p my-port<<EOF
cd projectDir/my-project
git pull origin master
~/.nvm/versions/node/v12.16.2/bin/npm install
pm2 restart all
exit
EOF
쉘 스크립트를 실행하면 다음과 같은 결과가 나타납니다.
mesg: ttyname failed: Inappropriate ioctl for device
From git+ssh://github.com/xxxx/my-project
* branch master -> FETCH_HEAD
Already up to date.
/usr/bin/env: ‘node’: No such file or directory
-bash: line 4: pm2: command not found
NVM 버전: 0.35.3 노드 버전: v12.16.2
적절하다면 무엇을 시도했는지 설명하세요.
다른 노드 버전 경로를 시도했지만 동일한 결과를 얻었습니다. 쉘 스크립트 대신 SSH를 통해 사용자로 원격 서버에 로그인하고 "~/.nvm/versions/node/v12.16.2/bin/npm install"을 실행하면 매력처럼 작동합니다.
답변1
해결책을 찾았습니다. npm 명령을 실행하기 전에 "source ~/.nvm/nvm.sh;"를 추가해야 합니다.
더 자세한 답변을 보려면 제가 해결책을 찾은 스레드를 확인하세요.https://unix.stackexchange.com/a/425819/411880