변수를 chpst가 로드한 환경 변수의 값으로 바꾸십시오.

변수를 chpst가 로드한 환경 변수의 값으로 바꾸십시오.

chpst다음과 같은 환경 변수를 로드하는 데 사용하는 경우 :

env BAR=baz chpst -e envdir mycommand

콘텐츠가 포함된 envdir파일이 있습니다.envdir/FOO

foo$BAR

mycommand대신 is 값을 얻을 수 있는 방법이 있나요 ?FOOfoobazfoo$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

관련 정보