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

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

(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

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

  • 루트는 모릅니다( npmunder에 의해 설치되었으므로 의미가 있음)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가 실행됩니다.

관련 정보