/bin/env : 糟糕的解释器

muy*_*tan 2 bash environment-variables shebang

我在 Linux Mint 19.03 上。

我有一个安装 shell 脚本文件,setup.sh. 当我跑./setup.sh

muyustan@mint:~/Downloads/quartusExtracted$ ./setup.sh 
bash: ./setup.sh: /bin/env: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)

在的shebang setup.sh

#!/bin/env bash
Run Code Online (Sandbox Code Playgroud)

我对这些事情的理解非常狭窄,因为我对 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*
Run Code Online (Sandbox Code Playgroud)

还,

muyustan@mint:~/Downloads/quartusExtracted$ which bash
/bin/bash
Run Code Online (Sandbox Code Playgroud)

因此,我认为更改setup.shto 中的 shebang#! /bin/bash将解决问题(我还没有尝试过),但是,这似乎不是很直观,因为如果是这样,那么我问自己,

“这个应用程序(Quartus 13.1)的开发人员是否犯了错误?”,这让我认为我的系统出了问题。

那么,问题是,为什么会出现这种情况?

谢谢。

ter*_*don 5

您的系统没有任何问题,您只是使用了错误的env. 至少在 Linux 系统上,env二进制文件通常在/usr/bin而不是/bin

$ type env
env is /usr/bin/env
Run Code Online (Sandbox Code Playgroud)

因此,您的脚本告诉您的系统使用/bin/env不存在的 ,这就是您收到该错误的原因。只需更改为正确的shebang,您应该没问题:

#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)