Guix에 nix-shell shebang과 동등한 기능이 있나요?

Guix에 nix-shell shebang과 동등한 기능이 있나요?

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좋은 흐름 관리와 재미를 위해 스크립트 주위에 래퍼를 만듭니다.

관련 정보