FOO=stringhere
시스템 프로세스에서 사용할 수 있도록 변수를 내보내야 합니다 . 제가 하고 싶은 작업은 Upstart 작업입니다.
불행히도 Upstart 매뉴얼을 따라해 보았습니다.env FOO=stringhere
http://upstart.ubuntu.com/cookbook/#environment-variables
그러나 시스템이 시작된 후에는 echo $FOO
아무 것도 반환되지 않습니다.
불가능한 일을 하려고 하는 걸까요, 아니면 제가 알고 있어야 할 함정이 있는 걸까요?
답변1
당신이 인용한 페이지에 따르면,
Upstart를 사용하면 환경 변수를 설정할 수 있습니다이러한 작업은 작업 구성 파일에 정의된 작업에 액세스할 수 있습니다..
변수가 사용되는 환경에 설정되어 있음을 나타냅니다.시스템 데몬시작시. 이것사용자로그인 후 환경이 별도로 구성됩니다.
데몬이 사용자가 설정한 변수를 알고 있는지 확인하려면 다음을 사용하여 테스트할 수 있습니다.일시적으로시작 스크립트를 수정하고 다음과 같은 내용을 추가 logger "=============== The variable FOO is set to $FOO ====================="
하면 시작 중에 기록된 정보( /var/log/messages
예: 보기)가 표시됩니다.
답변2
귀하의 예에서는 변수를 동일한 파일에서 사용할 수 있습니다.
Upstart Cookbook의 참고 사항.
작업 프로필은 사용자의 환경 변수에 액세스할 수 없으며 슈퍼유저도 액세스할 수 없습니다. 생성된 모든 작업 프로세스는 사용자 환경이 없는 init의 하위 프로세스이므로 이는 불가능합니다.
Upstart Cookbook의 추가 설명입니다.
*.conf 파일에 작성한다고 가정하면 env TESTING=123
아래 스크립트 블록(사용한 것)에서 이 변수를 사용할 수 있습니다.
script
# prints "TESTING='123'" to system log
logger -t $0 "TESTING='$TESTING'"
end script
또는 보다 정교한 접근 방식을 사용하면 작업을 "수신"하는 작업에서 변수를 사용할 수 있습니다.
# /etc/init/A.conf
start on wibble
export foo
# /etc/init/B.conf
start on A
script
logger "value of foo is '$foo'"
end script
답변3
달성하려는 작업은 로그인 쉘을 통해 더 잘 수행됩니다 /etc/profile
.source
export foo="String here"