쉘 스크립트에서 환경 변수가 설정되지 않은 것 같습니다.

쉘 스크립트에서 환경 변수가 설정되지 않은 것 같습니다.

다음 내용이 포함된 쉘 스크립트 파일이 있습니다 ./bin/postactivate.

#!/bin/sh

export STATIC_ROOT="/webapps/tsango/static/"
export MEDIA_ROOT="/webapps/tsango/media/"
export DATABASE_NAME="tsango"
export DJANGO_SETTINGS_MODULE="tsango.settings.vagrant"
export DATABASE_PASSWORD="password"
export BROKER_URL="amqp://tsango:password@localhost/tsango"
export DATABASE_USER="tsango"

command 로 실행합니다 sudo sh ./bin/postactivate. 명령이 제대로 실행되는 것 같습니다. 즉, 명령줄에 출력이 없습니다.

그러나 환경 변수 목록을 보는 데 사용하면 printenv스크립트 변수가 하나도 설정되지 않습니다.

제가 뭔가 놓친 게 있을 수도 있는데... 뭔가 말씀해주실 수 있나요?

답변1

스크립트를 다음과 같이 호출해야 합니다.

source bin/postactivate

프로세스에는 환경 변수가 있습니다. 쉘의 프로세스 ID가 1003이라고 가정해 보겠습니다. .PID 1003 포크를 호출하여 sudo sh ./bin/postactivate1108이라는 새로운 프로세스를 생성합니다. 프로세스 1108 호출 은 exec자체적 으로 sudo. 따라서 PID 1108은 환경 변수를 설정합니다.sudosh나 자신을 위해예를 들어 STATIC_ROOT입니다. 그런 다음 종료됩니다. 1108(PID 1003)을 기다리는 셸은 새 프롬프트를 인쇄하지만 PID 1003 환경에서는 아무 것도 변경되지 않습니다.

관련 정보