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.sh
to 中的 shebang#! /bin/bash
将解决问题(我还没有尝试过),但是,这似乎不是很直观,因为如果是这样,那么我问自己,
“这个应用程序(Quartus 13.1)的开发人员是否犯了错误?”,这让我认为我的系统出了问题。
那么,问题是,为什么会出现这种情况?
谢谢。
您的系统没有任何问题,您只是使用了错误的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)