/bin/env : 잘못된 해석기

/bin/env : 잘못된 해석기

저는 Linux Mint 19.03을 사용하고 있습니다.

설치 쉘 스크립트 파일인 setup.sh. 내가 달릴 때./setup.sh

muyustan@mint:~/Downloads/quartusExtracted$ ./setup.sh 
bash: ./setup.sh: /bin/env: bad interpreter: No such file or directory

의 shebang setup.sh:

#!/bin/env bash

나는 Linux 세계에 익숙하지 않기 때문에 이러한 것들에 대한 나의 이해는 매우 좁습니다.

/bin/env bash정확한 bash경로를 제공하는 대신 를 사용하는 것은 "환경 변수를 검색하여 찾아보세요"와 같은 것임을 알았습니다 bash. /bin에 대한 디렉토리를 보면 env해당 파일이 없다는 것을 알 수 있습니다.

muyustan@mint:/usr/bin$ ll /bin | grep "env"
lrwxrwxrwx  1 root root       6 Mar 21 14:35 open -> openvt*
-rwxr-xr-x  1 root root   18872 Jan 22  2018 openvt*

또한,

muyustan@mint:~/Downloads/quartusExtracted$ which bash
/bin/bash

따라서 나는 to에서 shebang을 변경하면 setup.sh문제 #! /bin/bash가 해결될 것이라고 가정합니다(시도하지는 않았습니다). 그러나 이것은 매우 직관적이지 않은 것 같습니다. 그렇다면 나는 스스로에게 다음과 같이 묻습니다.

"이 애플리케이션(Quartus 13.1)의 개발자가 실수를 한 걸까요?"라는 질문이 나오면 내 시스템에 뭔가 문제가 있다는 생각이 들게 됩니다.

그렇다면 문제는 왜 이런 상황이 되는가 하는 것입니다.

감사해요.

답변1

시스템에는 아무런 문제가 없습니다. 단지 잘못된 경로를 사용하고 있을 뿐입니다 env. Linux 시스템에서는 적어도 env바이너리가 일반적으로 다음 /usr/bin과 같지 않습니다 /bin.

$ type env
env is /usr/bin/env

따라서 스크립트는 /bin/env존재하지 않는 를 사용하도록 시스템에 지시하고 있으며 이것이 바로 해당 오류가 발생하는 이유입니다. 간단히 올바른 shebang으로 변경하면 괜찮을 것입니다.

#!/usr/bin/env bash

관련 정보