/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

のシェバンsetup.sh

#!/bin/env bash

私は Linux の世界にかなり不慣れなので、これらのことに関する私の理解は非常に狭いです。

/bin/env bash正確なbashパスを指定する代わりに を使用することは、「環境変数を検索して 」を見つけるようなものだとわかっていました。のディレクトリbashを調べると、そのようなファイルは存在しないことがわかります。/binenv

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#! /bin/bash試していません)。しかし、これはあまり直感的ではないようです。もしそうなら、私は自分自身にこう問いかけます。

「このアプリケーション(Quartus 13.1)の開発者はミスを犯したのでしょうか?」と聞かれ、私のシステムに何か問題があるのではないかと思ってしまいます。

それで、疑問なのは、なぜこのような状況になっているのかということです。

ありがとう。

答え1

システムに問題はありません。 へのパスが間違っているだけですenv。少なくとも Linux システムでは、envバイナリは通常 にあり/usr/bin、 ではありません/bin

$ type env
env is /usr/bin/env

つまり、スクリプトはシステムに を使用するように指示しています/bin/envが、これは存在しません。そのため、このエラーが発生します。正しいシェバンに変更するだけで問題は解決します。

#!/usr/bin/env bash

関連情報