내 웹 서버에 다음 내용이 포함된 파일 f가 있습니다.
alias ll='ls -l'
다른 Linux 시스템에서 다음을 수행하고 싶지만 명령을 올바르게 실행할 수 없습니다.
curl http://myserver/f | ?
어디? 각 줄은 현재 환경으로 읽혀집니다. 따라서 위의 파일이 주어지면 이는 실행과 동일한 효과를 갖습니다.
% alias ll='ls -l'
현재 쉘 프로세스에서. 가능합니까?
답변1
사용해 보는 것은 어떨까요 eval "$(curl "$URL")"
?
하지만 올바른 URL을 얻었는지, 다운로드한 코드가 불쾌한 일을 하지 않는지 확인하는 것이 좋습니다.
답변2
Bash에서는 다음과 같이 명령 /dev/stdin
출력을 한 줄로 리디렉션한 curl
후 /dev/stdin
소싱을 시도 할 수 있습니다.
source /dev/stdin <<< "$(curl http://myserver/f)"
이렇게 하면 하위 쉘(상위 쉘에는 표시되지 않음)에서 (소스) 변수 할당을 피해야 합니다.
답변3
파이프는 항상 하위 쉘을 생성하는 것 같습니다. 어쩌면 파일 교체가 여기에서 더 적절할 수도 있습니다.
## this doesn't work
# curl http://myserver/f | . /dev/stdin
## this works
. <(curl http://myserver/f)