디지털 바다 우분투 서버에서 쉘 스크립트를 통해 유니콘 명령을 실행하려고합니다. 명령은 다음과 같습니다스크립트에서 실행할 때 su -c 명령이 실패합니다.
su - xxx -c cd /home/xxx/apps/app_name && rbenv rehash && rbenv local 2.3.1 && /home/xxx/apps/app_name/bin/unicorn -c /home/xxx/apps/app_name/config/unicorn.rb -E production -D
명령 행에서 발행하지만이 같은 스크립트에 넣어 경우이 명령이 작동 : 나는 경우 -su: rbenv: command not found
:
#!/bin/sh
USER=xxx
APP_ROOT=/home/xxx/apps/app_name
RBENV_RUBY_VERSION=2.3.1
SET_PATH="cd $APP_ROOT && rbenv rehash && rbenv local $RBENV_RUBY_VERSION"
RAILS_ENV=production
UNICORN="$APP_ROOT/bin/unicorn"
UNICORN_OPTS="-c $APP_ROOT/config/unicorn.rb -E $RAILS_ENV -D"
CMD="$SET_PATH && $UNICORN $UNICORN_OPTS"
su - $USER -c "$CMD"
나는이 오류 $CMD
주위의 따옴표를 제거하면이 오류가 발생합니다. su: invalid option -- 'E'
누구든지이 문제를 해결하는 방법을 알고 있습니까? 아래의 의견에 따라
는,이 같은 rbenv하는 경로를 추가하여 스크립트를 수정 한 :
RBENV_ROOT="/home/$USER/.rbenv"
SET_PATH="cd $APP_ROOT && $RBENV_ROOT/bin/rbenv rehash && $RBENV_ROOT/bin/rbenv local $RBENV_RUBY_VERSION"
지금이 프로그램을 실행할 때 나는 다음과 같은 오류 얻을 : -su: cd /home/xxx/apps/app_name && /home/xxx/.rbenv/bin/rbenv rehash && /home/xxx/.rbenv/bin/rbenv local 2.3.1 && /home/xxx/apps/app_name/bin/unicorn /home/xxx/apps/app_name/config/unicorn.rb -E production -D: No such file or directory
요제프을 : 제안 주셔서 감사하지만, 난 여전히이 작업을 얻을 수 없습니다. '$ CMD'를'$ CMD = " '$ SET_PATH && $ UNICORN $ UNICORN_OPTS'"'로 바꾸면 su - ... : 해당 파일이나 디렉토리가 없습니다' – pdoak
그게 또 다른 문제입니다. 이 스크립트에서, 당신은 이미 정확하게 인용 한 것이지만, 문제는'rbenv'를 실행하는 것입니다. $ PATH와'rbenv'가 어디 있는지 확인하십시오 :'whereis rbenv','echo "$ PATH"'- 스크립트에 넣고 수동으로 실행하면 차이가 나타납니다. –
고마워.하지만 난 아직도이 일을 못해. 원래의 질문을 조정 된 스크립트로 업데이트했습니다. – pdoak