Mac操作系统:/usr/bin/env:错误的解释器:不允许操作



我正试图在Mac OS 10.7(Lion)上运行此脚本,但我收到了错误:

$ bbcolors
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted

我已经在我的其他Mac电脑上成功地运行了这个脚本。这只是从Daring Fireball下载的未经修改的脚本。

我发现这个人也有类似的问题,但公认的答案是文件系统在挂载时有一个"noexe"选项。我很确定我不是这样的,因为我刚刚在/usr/local/bin/中找到了它,其中的其他东西也很好(它也不会从其他地方运行,也不会作为包括root在内的其他用户运行)。

$ which bbcolors
/usr/local/bin/bbcolors
$ ls -l /usr/local/bin/bbcolors 
-rwxr-xr-x@ 1 nick  staff  9751 Mar 30 19:09 /usr/local/bin/bbcolors

这是一个Perl脚本,而不是一个编译的二进制文件,这并不重要。以下是一些关于其价值的额外信息:

$ cat /usr/local/bin/bbcolors |head -n 1
#!/usr/bin/env perl
$ which perl
/usr/bin/perl
$ env | grep PATH
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

您是否碰巧在TextEdit中打开/保存了该文件?

这可能会引入文件系统元数据(隔离属性),从而导致您所描述的症状。

尝试:

xattr -l /usr/local/bin/bbcolors

xattr -d com.apple.quarantine /usr/local/bin/bbcolors

如果您看到隔离属性。

pilcorow的答案是正确的,但我提醒您注意,如果您使用磁盘映像,问题可能会非常令人困惑,因为com.apple.idential属性似乎是从磁盘映像文件继承到内部文件的(感谢apple开发论坛上的febeling注意到这一点!)。

为了解决这个问题,您必须从磁盘映像中删除隔离属性:

xattr -d com.apple.quarantine /path/to/disk/image

然后弹出并重新安装磁盘映像。然后您的文件将再次被清除。

我已经解决了这个问题。用TextEdit打开命令文件,然后保存。

更多信息:已解决操作不允许

-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted

/usr/bin/env是否存在?你能跑吗?它本身运行时应该将环境变量转储到stdout。

您可以安全地更换:

#!/usr/bin/env perl

使用您选择的perl二进制文件的完整路径,例如:

#!/usr/bin/perl

我在BBEdit(CLI:bbedit ~/bin/foo)中创建了一个shell脚本后遇到了这个问题。macOS沙盒安全功能似乎会自动隔离BBEdit修改的文件——如果文件是可执行的,并且BBEdit以某种方式访问该文件。

修复很简单:首选项>应用程序>允许

https://www.barebones.com/support/bbedit/quarantine.html

1.delete"node_modules";文件夹2.npm安装

相关内容

  • 没有找到相关文章

最新更新