我正试图在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安装