为什么#!/ usr / bin / env bash在我的系统上不起作用?

香豆素

在运行一些他们抱怨的安装脚本时,我遇到了一些问题bad interpreter

因此,我举了一个简单的例子,但我无法弄清楚问题出在哪里,请参阅下文。

#!/usr/bin/env bash
echo "hello"

执行上面的脚本会导致以下错误

[root@ech-10-24-130-154 dc-user]# ./junk.sh
bash: ./junk.sh: /usr/bin/env: bad interpreter: No such file or directory

/usr/bin/env文件存在,请参见下文:

[root@ech-10-24-130-154 dc-user]# ls -l /usr/bin/env
lrwxrwxrwx 1 root root 13 Jan 27 04:14 /usr/bin/env -> ../../bin/env
[root@ech-10-24-130-154 dc-user]# ls -l /bin/env
-rwxr-xr-x 1 root root 23832 Jul 16  2014 /bin/env
[root@ech-10-24-130-154 dc-user]#

如果我更改脚本以使用常规的shebang #!/bin/bash,则不会有问题。#!/bin/env bash也可以。

环境中缺少什么让便携式Shebang正常工作?

ls -lL /usr/bin/env返回,ls: cannot access /usr/bin/env: No such file or directory所以我想我需要更改符号链接?我可以指出/bin/env吗?

env --version 是8.4,操作系统是Red Hat Enterprise Linux Server 6.6版。

吉勒斯“别再邪恶了”

ls -lL /usr/bin/env显示符号链接已断开。这就解释了为什么shebang行不起作用的原因:内核正在尝试执行悬挂的符号链接,并且显然失败了。

/usr/bin/env -> ../../bin/env如果/usr/usr/bin都是实际目录(不是符号链接)是正确的显然,您的计算机不是这种情况。也许/usr是符号链接?(显然,它不是的符号链接/,否则/usr/bin/env将与相同/bin/env,而不是符号链接)。

您需要修复该符号链接。您可以将其设为绝对链接:

sudo ln -snf /bin/env /usr/bin/env

您可以将其设为相对链接,但如果这样做,请确保它是正确的。在创建符号链接之前,请切换至/usr/bin并运行ls -l relative/path/to/bin/env以确认是否正确。

这不是默认的RHEL设置,因此您必须在本地进行修改。尝试找出您所做的事情以及是否可能导致其他类似问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么#!/ usr / bin / env bash优于#!/ bin / bash?

“#!/ usr / bin / env bash”和“#!/ usr / bin / bash”之间有什么区别?

从/ usr / bin / env或/ bin启动bash

为什么“ / usr / bin / env bash -x”仅在命令行中有效?

在这种情况下,为什么我可以将参数传递给/ usr / bin / env?

为什么最好使用“#!/ usr / bin / env名称”代替“#!/ path / to / NAME”作为我的shebang?

为什么#!/ usr / bin / env将“ $ @”显示为1?

为什么“#!/ usr / bin / env python”比“#!/ usr / bin / python”更正确?

$BASH_VERSION vs /usr/bin/env

$BASH_VERSION 与 /usr/bin/env

为什么Capistrano从/ usr / bin / env而不是/usr/local/rvm/gems/ruby-2.1.0/bin/rake执行'rake'?

什么是#!/ usr / bin / env xdg-open在桌面文件中?

symlink / usr / bin / env损坏?

为什么bash的printf比/ usr / bin / printf快?

/ usr / bin / env -0(对于非Linux系统)

在Java中执行/ usr / bin / env bash -c“ command”

POSIX shell脚本shebang#!/ bin / sh与#!/ usr / bin / env sh,有什么区别?

#!/usr/bin/python 行有什么作用?

PATH 在 /usr/bin/env -i /bin/bash --norc --noprofile 之后不为空

为什么logrotate的bin路径是`/ usr / sbin`

什么是/ usr / bin / parity?

什么是/ usr / local / bin?

在Windows上使`#!/ usr / bin / env python`工作

是否可以保证/ usr / bin / env存在?

/usr/bin/env: “node”: 权限被拒绝

#!_ perl与#!/ usr / bin / env perl相同吗?

python shebang与/ usr / bin / env而不是hard-path有什么区别?

节点文件开始处的“ / usr / bin / env节点”到底做什么?

在shebang中使用“#!/ usr / bin / env python”而不是仅仅调用“#!python”解释器有什么好处?