guix shell
특정 환경에서 실행되는 스크립트를 작성하고 싶습니다 . 동등한 버전이 있었으면 좋겠어요nix-shell
셰르본. 예를 들어, 다음과 유사한 내용을 작성하면 좋을 것입니다.
#!guix shell
#!--manifest=manifest.scm bash
# ... commands ...
해결 방법으로는 평가된 검색 경로를 "가져오는" 것만으로도 충분할 수 있습니다 guix shell
. 예를 들면 다음과 같습니다.
#!/usr/bin/env bash
eval "$(guix shell --manifest=manifest.scm --search-paths)"
# ... commands ...
답변1
나는 모든 패키지 통역사를 허용하는 이 shebang을 사용합니다.
#!/usr/bin/env -S guix shell [--pure] [-m manifest.scm] [packages...] -- bash
답변2
검색 경로를 평가하는 것이 guix shell
유효한 옵션인 것 같습니다. 아마도 그다지 귀엽지 않을 것입니다 #!nix-shell
. 하지만 어쩌면 그것이 특징일 수도 있습니다.
즉, 동일한 디렉터리에 Manifest.scm 파일이 존재한다고 가정하고 파일 상단에 다음 줄을 추가합니다.
#!/usr/bin/env bash
eval "$(guix shell --manifest=manifest.scm --search-paths)"
# ...
또한 --pure
이 옵션을 추가하여 스크립트가 자체 포함되도록 할 수 있습니다.
#!/usr/bin/env bash
eval "$(guix shell --pure --manifest.scm --search-paths)"
# ...
스크립트가 존재하는 경우쉘 인증 디렉토리, 다음이 작동합니다:
#!/usr/bin/env bash
eval "$(guix shell --search-paths)"
# ...
이것은 목록 없이도 작동합니다.
#!/usr/bin/env bash
eval "$(guix shell --pure python-wrapper python-numpy --search-paths)"
exec python wrapped-python-script.py "$@"
nix-shell
그러나 이 접근 방식 은 shebang을 사용하여 다양한 인터프리터를 위한 환경을 만드는 것을 지원하지 않지만 이 변형은 지원합니다. 예를 들어, nix-shell
스크립트 자체는 Python 파일일 수 있지만 Shebang의 매직 바이트는 Python 파일에 대한 nix "프로필"을 생성합니다. 이를 위해 Guix 메서드는 위의 내용을 사용하여 exec
좋은 흐름 관리와 재미를 위해 스크립트 주위에 래퍼를 만듭니다.