aws cfn을 사용하여 ubuntu 인스턴스를 시작하고 있으며 cfn 시작 스크립트에 제공된 변수를 인스턴스의 스크립트에 전달해야 합니다. 예를 들어 "db-server=db-2.domain.com"을 전달할 수 있으며 인스턴스에 이 주소를 알고 싶어하는 여러 스크립트가 있습니다.
현재 나는 /etc/profile.d에 vars를 설정하여 파일을 생성 export
하지만 이는 bash가 로그인 셸로 시작된 경우에만 작동합니다. 이는 이러한 변수를 모든 곳에 두기 위해 추가 작업이 필요한 경우입니다.
그래서 대신 /usr/local/bin에 파일을 생성할 수도 있습니다. 예를 들어 콘텐츠를 get-db-host.sh
사용하면 echo "db-2.domain.com"
변경 없이 각 스크립트에서 해당 파일을 사용할 수 있습니다.
좋은 접근 방식입니까?
답변1
좋은 접근 방식입니까?
나는 당신이 말하는 모든 스크립트가 쉘 스크립트라고 확신합니다. 이 경우 모든 변수를 구성 파일에 넣을 수 있습니다.
db-server=db-2.domain.com
이를 표준 위치(예: /usr/local/etc/myapp/
)에 배치하고 다른 스크립트에 소스를 입력합니다.
. /usr/local/etc/myapp
분명히 plain 을 사용할 수도 있습니다 /etc
.
답변2
권장되는 방법은 변수를 /etc/environment
. 이 파일은 로그인 시 읽혀집니다.우분투 문서):
특정 사용자가 아닌 시스템 전체에 영향을 미치는 환경 변수 설정은 시스템 또는 데스크톱 세션이 로드될 때 실행되는 많은 시스템 수준 스크립트에 배치해서는 안 됩니다.
/etc/environment - 이 파일은 특히 시스템 전체의 환경 변수 설정을 위한 것입니다. 이는 스크립트 파일이 아니며 한 줄에 하나씩 할당 표현식으로 구성됩니다. 특히 이 파일은 시스템 전체의 로케일 및 경로 설정을 저장합니다.
그러니 수정 /etc/environment/
하고 추가하세요.
db-server=db-2.domain.com
답변3
나는 그 생각에 반대할 것입니다. 해당 디렉토리는 /usr/local/bin
(보통) 특정 패키지의 일부가 아닌 상자에 로컬인 실행 파일을 위한 것입니다.
여러분이 하고 있는 신비한 설정을 만들기보다는 여러분의 작업을 수행해야 할 수 있는 다른 사람이 명백히 알 수 있는 곳에 변수를 배치하십시오.
나는 그것들을 귀하의 디렉토리에 있는 파일에 넣고 $HOME
간단히 $HOME/.bashrc
.
예
if [ -f $HOME/.my_aws_env ]; then
. $HOME/.my_aws_env
fi
아니면 멋지고 힙하게 한 줄로 할 수도 있습니다.
[ -f $HOME/.my_aws_env ] && . $HOME/.my_aws_env