perl Mac操作系统:/usr/bin/环境文件:错误的解释程序:不允许操作

h5qlskok  于 2023-01-02  发布在  Perl
关注(0)|答案(6)|浏览(251)

我尝试在Mac OS 10.7(Lion)上运行此脚本,但遇到错误:

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

我已经成功地在我的其他Mac电脑上运行了这个脚本。它只是从Daring Fireball下载的this script,没有修改。
我发现this person有一个非常类似的问题,但公认的答案是文件系统在挂载时有一个“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
ncgqoxb0

ncgqoxb01#

您是否碰巧在"文本编辑"中打开/保存了该文件?
这可能会引入文件系统元数据(隔离属性),从而导致您描述的症状。
试试看:

xattr -l /usr/local/bin/bbcolors

以及

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

如果您看到隔离属性。

qzlgjiam

qzlgjiam2#

pilcrow的回答是正确的,但是我提醒您注意一个事实,如果您正在使用磁盘映像,这个问题可能会非常混乱,因为com.apple.quarantine属性似乎是从磁盘映像文件继承到里面的文件的(感谢苹果开发论坛的febeling注意到这一点!)。
要解决此问题,必须从磁盘映像中删除隔离属性:

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

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

iq0todco

iq0todco3#

我已解决此问题。请使用"文本编辑"打开命令文件,然后保存它。
更多信息:Resolved Operation not permitted

pcww981p

pcww981p4#

-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
fdbelqdn

fdbelqdn5#

我在BBEdit中创建shell脚本(CLI:bbedit ~/bin/foo).似乎macOS沙盒安全功能会自动隔离BBEdit修改的文件-如果文件是可执行的,并且BBEdit以某种方式访问该文件。
修复很简单:首选项〉应用程序〉允许
https://www.barebones.com/support/bbedit/quarantine.html

a0x5cqrl

a0x5cqrl6#

1.删除“节点模块”文件夹2.npm安装

相关问题