env 파일에서 환경 변수를 읽고 명령을 실행하는 유틸리티가 있습니까?


16

foreman .env 파일을 읽고 내용에서 환경 변수를 설정 한 다음 프로그램을 실행할 수 있습니다

예 : foreman run -e vars.env myprogram

...하지만 다른 많은 작업을 수행합니다 (기본적으로 Procfile 형식을 사용하여 작업을 시작하는 데 관심이 있음).

.env 파일을 읽고 새로운 환경에서 명령을 실행하는 데 중점을 둔 더 간단한 (Linux / Unix) 도구가 있습니까?

예제 환경 파일 ( http://ddollar.github.io/foreman/#ENVIRONMENT ) :

FOO=bar
BAZ=qux

1
예제 .env 파일을 게시 할 수 있습니까? 의심 bash .env되거나 sh .env작동 할 수 있습니까?
다니엘 Widrick

@ IVlint67 질문을 조금 개선했습니다.
wodow

답변:


19

활성 쉘에서 환경 파일을 소싱하고 프로그램을 실행할 수 있습니다.

sh -ac ' . ./.env; /usr/local/bin/someprogram'

-a스위치는 프로그램을 사용할 수 있습니다 그래서, 모든 변수를 보냅니다.


3
bash -ac 'source .env && ./program'
fiatjaf

@fiatjaf POSIX 쉘이 작업을 수행하고 실제로 bash가 필요한 기능이 필요하지 않은 경우이 경우 bash를 사용하는 이유는 무엇입니까? 또한 모든 시스템에서 기본적으로 bash를 사용할 수있는 것은 아닙니다 (예 : FreeBSD).
Marco

오, 맞아요, 당신의 방법이 더 좋다고 생각합니다. 나는 Bash 대안을 제공하는 것이 더 편안하다고 생각했기 때문에 제공했습니다.
fiatjaf 2019 년

2

다른 대안은 envdir다음과 같습니다.

envdir은 지정된 디렉토리의 파일에 따라 환경이 수정 된 다른 프로그램을 실행합니다.


이 게시물을 사이에 약간의 보완 기능을 언급 envdir, runitchpst; 즉, env 변수를 변경하는 기능은 실행중인 프로세스 상태에 반영됩니다. 게시물은 도커에 관한 것이지만 도커에만 국한되지는 않습니다. blog.ghaering.de/post/docker-as-vm [archive.org : web.archive.org/web/20190321165332/https://blog.ghaering.de/... ]
driftcatcher

2

나는 노력 source .env했고 그것은 매력처럼 일 했다 . 불행히도, 여기에 게시 된 다른 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.


0

이것은 작동합니다 :

env $(cat .env | tr "\\n" " ") myprogram

그러나 분명히 .env유틸리티 프로그램이 할 파일 형식이 올바른지 확인하지는 않습니다 .


1) cat필요하지 않습니다. 단지 쓰십시오. tr "\\n" " " < .env2) 여러 줄 할당을 사용하면 중단됩니다.
Marco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.