다른 파일의 줄을 현재 쉘로 내보내는 방법

다른 파일의 줄을 현재 쉘로 내보내는 방법

다음과 같은 파일에 이 콘텐츠가 있습니다 foo.env.

foo=bar

그런 다음 해당 파일을 읽고 다음 줄을 셸로 내보내고 싶습니다.

for line in $(cat ./foo.env); do
 eval export $line
done

하지만 내가 달릴 때

echo $foo

변수가 비어 있습니다. 내가 뭘 잘못하고 있는 걸까요?

답변1

수정되지 않은 코드

for line in $(cat ./foo.env); do
 eval export $line
done
echo $foo

파일에 넣고 sh 또는 bash를 사용하여 실행하면 정확히 원하는 작업이 수행됩니다. 어쩌면 echo $foo다른 쉘에서 실행 중일까요?

그러나 POSIX 셸은 이 경우를 위해 특별히 내장 함수를 정의합니다.

. ./foo.env
echo $foo

관련 정보