chpst
다음과 같은 환경 변수를 로드하는 데 사용하는 경우 :
env BAR=baz chpst -e envdir mycommand
콘텐츠가 포함된 envdir
파일이 있습니다.envdir/FOO
foo$BAR
mycommand
대신 is 값을 얻을 수 있는 방법이 있나요 ?FOO
foobaz
foo$BAR
FOO
분명히 위의 접근 방식은 작동하지 않습니다. 설정을 그대로 둡니다 foo$BAR
. 로드된 환경 변수의 값을 대체하기 위해 할 수 있는 일이 있는지 궁금합니다.
전체 컨텍스트: 대부분의 경우 환경 변수는 일단 환경을 선택하면 정적이지만 어떤 경우에는 호스트별로 달라야 합니다. 그래서 실생활에서는 실행 환경에 적절한 호스트 이름을 설정 한 HOST
다음 API_URL=http://$HOST:8080/
. chpst
사례.
답변1
어쩌면 이런 게 있지 않을까요? (envdir의 내용을 신뢰할 수 있다고 가정)
이 파일을 envdir/run에 넣으세요:
#!/bin/bash
for v in `dirname $0`/* ; do
if [[ "`basename $v`" = run ]]; then
continue;
fi
eval "export `basename $v`=`cat $v`"
done
exec "$@"
그 다음에:
./envdir/run some command