답변:
이후 source
(또는 .
) 인수로 파일을 소요, 당신은 시도 할 수 있습니다 :
source <(echo something)
소스 명령에는 파일 인수가 필요합니다. 프로세스 대체로 일부 쉘에서이를 얻을 수 있으며 이는 쉘이 동일한 방식으로 대체하기 때문입니다.
arg=$(echo hi)
echo
서브 쉘의 출력과 함께 명령 행에 있는 비트는 프로세스 대체의 경우 서브 쉘을 명명 된 파일 (보통 /dev/fd/62
또는 무언가-파일 디스크립터에 대한 링크)로 대체합니다 . 파이프를 사용하면 파일 설명자가 0이므로 ...
echo 'echo hi' | . /dev/fd/0
... /dev/stdin
또는 모든 경우에 리눅스 시스템과 다른 많은 시스템에서 잘 작동해야합니다. 다음 문서와 유사하게 사용할 수도 있습니다.
. /dev/fd/3 3<<HI
$(echo 'echo hi')
HI
다음과 같은 방법으로 쉘이 프로세스 대체를 처리하는 방식을 확인할 수 있습니다.
(set -x; readlink <(:))
... 어떤 인쇄 (의 bash
) :
+ set +x
+ readlink /dev/fd/63
++ :
pipe:[2212581]
... 그래서 우리는 쉘이 대체를하고 readlink
있고 파일 디스크립터 63에서 열리는 성가신 파이프에서 읽고 있음을 알 수 있습니다.