57

我正在尝试在 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
4

5 回答 5

106

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

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

尝试:

xattr -l /usr/local/bin/bbcolors

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

如果您看到隔离属性。

于 2012-03-31T03:21:55.743 回答
15

pilcrow 的回答是正确的,但是我提请您注意,如果您正在使用磁盘映像,问题可能会非常混乱,因为 com.apple.quarantine 属性似乎是从磁盘映像文件继承到文件的内部(感谢Apple 开发论坛上的 febeling注意到这一点!)。

要解决此问题,您必须从磁盘映像中删除隔离属性:

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

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

于 2012-12-20T13:06:11.560 回答
6

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

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

于 2012-11-13T02:44:39.780 回答
0
-bash: /usr/local/bin/bbcolors: /usr/bin/env: bad interpreter: Operation not permitted

/usr/bin/env存在吗?你能运行它吗?自行运行它应该将您的环境变量转储到标准输出。

您可以安全地更换:

#!/usr/bin/env perl

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

#!/usr/bin/perl
于 2012-03-31T03:05:23.483 回答
0

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

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

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

于 2021-02-02T08:35:54.350 回答