파일에 저장하고 임시 파일을 사용하면 문제가 없습니다.
$ url="https://raw.githubusercontent.com/toraritte/shell.nixes/main/deno-latest-shell.nix"
$ curl $url > default.nix
$ nix-shell
# or
$ nix-shell default.nix
하지만 임시 파일을 사용하지 않고 이를 수행하는 방법은 무엇입니까? 이것이 내가 지금까지 시도한 것입니다:
관로
$ curl $url | nix-shell -
그러면 파일이 다운로드되고... 아무 일도 일어나지 않습니다.
$ curl $url | nix-shell
default.nix
(물론) 오류가 발생합니다 .
프로세스 대체
$ nix-shell <(curl $url)
# ... output...
error: getting status of '/dev/fd/pipe:[11284302]': No such file or directory
하지만 변경하면 nix-shell
출력 을 일반 파일에 cat
저장하고 해당 내용을 인쇄하는 것처럼 작동합니다 .curl
(아마 이 방법에서도 같은 문제가 발생했을 것입니다.프로세스 대체<()가 ssh -F에서 작동하지 않는 이유? 해결책은 =(...)
기본적으로 뒤에서 임시 파일을 사용하는 zsh와 특수 연산자를 사용하는 것입니다. )
있다는 것을 알고 있지만 nix-shell -E
특정 예제 Nix 표현식에 주석이 포함되어 있지 않더라도 문제가 될 수 있습니다...
답변1
이것은 Nix 버그처럼 보입니다. 여기에도 비슷한 버그가 있습니다.nix eval
.
문제가 해결될 때 까지는 nix-shell -E "$(curl $url)"
.nix-shell -E "import (builtins.fetchurl $url)"
실행하기 전에 표현식을 신뢰할 수 있는지 확인하십시오. 표현식에는 shellHook
임의의 bash 코드가 포함될 수 있으며 nix-shell이 이를 실행합니다.