【发布时间】:2012-04-14 16:58:49
【问题描述】:
我正在尝试在 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
【问题讨论】:
-
您已经了解了大多数可能出现问题的正常基础;做得好。当你运行
perl -v时会发生什么? Perl 脚本 (bbcolors) 中最初的注释行之后会出现什么?另外,权限后面的@表示文件有一些辅助属性信息;你有没有调查过那是(可能是ls -@)? -
我用
xattr -r com.apple.quarantine /file/path解决了这个问题我会回答我自己的问题,但我没有足够的代表来做几个小时。 -
xattr -d com.apple.quarantine /usr/local/bin/bbcolors? (-r表示“递归”;-d表示“删除”。)我一直忘记那个命令叫什么。
标签: macos perl bash command-line-interface env