저는 aws cfn을 사용하여 ubuntu 인스턴스를 시작하고 있으며 cfn 시작 스크립트에 제공된 변수를 인스턴스의 스크립트에 전달해야 합니다. 예를 들어 "db-server=db-2.domain.com"을 전달할 수 있으며 해당 주소를 알고 싶어하는 인스턴스에 많은 스크립트가 있습니다.
현재는 /etc/profile.d에 vars를 설정하는 파일을 생성 export
하지만 이는 bash가 로그인 셸로 시작된 경우에만 작동하므로 이러한 변수를 어디에서나 사용할 수 있도록 하려면 추가 단계를 수행해야 합니다.
그래서 나는 예를 들어 콘텐츠 get-db-host.sh
로 /usr/local/bin에 파일을 생성하여 echo "db-2.domain.com"
모든 스크립트가 아무런 변경 없이 사용할 수 있을 것이라고 생각했습니다.
이것이 좋은 접근 방식입니까?
답변1
이것이 좋은 접근 방식입니까?
나는 당신이 말하는 모든 스크립트가 쉘 스크립트라고 확신합니다. 이 경우 모든 변수를 구성 파일에 넣을 수 있습니다.
db-server=db-2.domain.com
표준 위치(예: )에 배치 /usr/local/etc/myapp/
하고 다른 스크립트에서 가져옵니다.
. /usr/local/etc/myapp
/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