다른 사용자로 스크립트를 실행할 때 명령을 찾을 수 없습니다.

다른 사용자로 스크립트를 실행할 때 명령을 찾을 수 없습니다.

(AWS에서 Ubuntu EC2 사용)

나는 스크립트를 가지고 있습니다 /home/ubuntu/start.sh. 로 실행하면 ubuntu잘 실행됩니다. 시작할 때 실행해야 하므로 /etc/rc.local. 그러면 재부팅 시 루트로 실행되며 실패합니다. 다음을 통해 실패를 재현할 수 있습니다.

# I'm ubuntu
$ whoami
ubuntu
$ sudo su
# i'm now root
$ whoami
root
$ ./start.sh
./start.sh: line 9: npm: command not found
$ su -c ./start.sh - ubuntu
./start.sh: line 9: npm: command not found

그래서 그것은 다음과 같습니다:

  • 루트는 알지 못합니다 ( 이해가 쉽도록 under npm에 의해 설치됨 ).ubuntu/home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm
  • su -c ./start.sh - ubuntu우분투로 스크립트를 정확히 실행하지 않습니다

로 로그인한 것처럼 이 스크립트를 정확히 실행하려면 어떻게 해야 합니까 ubuntu?

답변1

PATH=$PATH:/node/v4.2.6/bin/ ./start.sh

답변2

선호하는 텍스트 편집기로 /etc/rc.local을 편집하세요.

sudo nano /etc/rc.local

그리고 다음 줄을 추가하세요 su ubuntu -c /etc/rc.local/ubuntu/start.sh &(실제로 파일 경로인 경우).

시작 시 ubuntu 사용자로 및 백그라운드 프로세스로 /etc/rc.local/ubuntu/start.sh를 실행합니다.

관련 정보