/bin/env : 잘못된 해석기

/bin/env : 잘못된 해석기

저는 리눅스 민트 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

setup.sh그래서 저는 the에서 shebang을 변경하면 #! /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

관련 정보