# uv를 shebang 라인으로 사용하는 방법

> Clean Markdown view of GeekNews topic #18966. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18966](https://news.hada.io/topic?id=18966)
- GeekNews Markdown: [https://news.hada.io/topic/18966.md](https://news.hada.io/topic/18966.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-29T21:33:16+09:00
- Updated: 2025-01-29T21:33:16+09:00
- Original source: [akrabat.com](https://akrabat.com/using-uv-as-your-shebang-line/)
- Points: 2
- Comments: 1

## Topic Body

- `~/bin/` 디렉토리에 자동화 스크립트를 많이 생성함.  
- `uv`와 인라인 스크립트 메타데이터를 발견한 이후로 Python을 더 많이 사용하게 됨.  
- `~/bin`이 경로에 있으므로 명령줄에서 직접 스크립트를 실행하고자 함.  
- 이를 위해 다음과 같은 shebang을 사용함: `#!/usr/bin/env -S uv run --script`  
- 명령줄은 이제 `uv run --script`를 실행하고 파일을 인수로 전달함.  
- `uv`는 shebang을 무시하고 나머지 파일을 일반 Python 파일로 실행함.  
- `chmod a+x {filename}` 명령어로 스크립트에 실행 권한을 부여한 후, Python으로 작성된 간단한 명령줄 스크립트를 사용할 수 있게 됨. 이 스크립트는 자동으로 종속성을 처리함.

## Comments



### Comment 33956

- Author: neo
- Created: 2025-01-29T21:33:17+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42855258) 
- `env -S` 옵션을 사용하여 shebang 라인에서 여러 인자를 전달할 수 있게 됨
  - Linux에서 shebang 라인은 단일 인자만 전달 가능하다는 일반적인 인식을 깨뜨림
  - `env -S`는 인자를 개별적으로 분리하여 실행하는 데 유용함

- `uv`를 사용하여 Python CLI 도구를 설치하는 방법을 개선함
  - `curl | sh` 스크립트를 사용하여 간단하게 설치 가능하게 함
  - PyPI에 `uv`를 의존성으로 하는 작은 설치 패키지를 만들어 CLI 도구를 설치함
  - Python 가상 환경을 관리할 필요 없이 독립된 환경에 설치 가능하게 함
  - 복잡한 의존성 문제로 인한 GitHub 이슈가 줄어듦

- Prolog 파일을 쉘에서 실행할 수 있는 방법을 고안함
  - Prolog 파일을 쉘 파일로도 인식되게 하여 실행 가능하게 함
  - 쉘에서 첫 번째 라인을 주석으로 처리하여 오류를 방지함

- Trey Hunner의 "Lazy self-installing Python scripts with uv" 기사에서 더 많은 예시와 세부사항을 제공함

- `mise`를 사용하여 작은 작업을 위한 스크립트를 작성할 수 있음
  - `uv`를 사용하여 Python 스크립트를 실행하는 방법을 소개함

- `uv run python`을 사용하여 Python 환경을 관리하는 것이 편리함
  - `.venv`를 관리할 필요 없이 프로젝트 환경에서 REPL을 실행할 수 있음
  - 시스템 설치 문제를 해결하고, 프로젝트/환경 내에서 직접 실행 가능함

- `uv`를 명령어 실행기로 사용할 때 몇 가지 주의할 점이 있지만, 대부분의 경우 시간 절약에 도움을 줌
  - `.py` 파일을 직접 실행할 때 경로 문제를 해결하기 위한 옵션이 있음

- TypeScript 사용자들은 Deno를 사용하여 유사한 작업을 수행할 수 있음
  - `deno run`을 사용하여 권한 플래그를 추가할 수 있음

- Nix 패키지 관리자를 사용하여 다양한 언어와 의존성을 관리할 수 있음
  - 단일 파일로 휴대 가능한 스크립트를 작성할 수 있음
