
사람들이 단일 터미널에서 사용할 수 있도록 온라인 튜토리얼을 만들 때 인라인 코드를 소스로 제공하는 것이 좋을 때도 있습니다. 그러나 이들 중 어느 것도 예상한 대로 작동하지 않았습니다. 나는 foo
이 모든 것에 대해 "바"가 되기를 기대합니다 . 왜 그런지 아는 사람 있나요?
#!/usr/bin/env bash
source <(echo "export foo=bar");
echo "$foo"
source <(cat <<< "export foo=bar");
echo "$foo"
source <(cat <<EOF
export foo=bar
EOF
);
echo "$foo"
내 유일한 추측은 source
파일 설명자에서 읽을 수 없다는 것입니다. 나는 또한 같은 것을 .
대신 사용해 보았습니다.source
저는 MacOS를 사용하고 있습니다 bash --version
. 출력:
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18) Copyright (C) 2007 Free Software Foundation, Inc.
답변1
이는 릴리스 4.0 이전 릴리스에서는 작동하지 않습니다 bash
(예: bash
macOS의 기본값인 릴리스 3.2.57(1)).
릴리스 4.0에는 버그 수정이 있었습니다:
'.'을 발생시키는 버그를 수정했습니다. 장치나 명명된 파이프와 같은 비정규 파일에서 명령을 읽고 실행하는 데 실패합니다.
(그건https://tiswww.case.edu/php/chet/bash/CHANGES)
프로세스 대체와 함께 사용할 때 source
(또는 ) 이 읽는 파일은 일반 파일이 아니므로 릴리스 4.0에서 수정된 버그를 유발할 수 있습니다..
최신 릴리스는 현재 릴리스 5.0.7(1)이며, 여기서 코드는 예상대로 작동합니다.