web-dev-qa-db-ja.com

Mac OS:/ 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から変更されていません。

私は this person を非常によく似た問題で見つけましたが、受け入れられた答えは、ファイルシステムのマウントに「noexe」オプションがあったというものでした。私は/ usr/local/bin /にそれを持っているのでそれは私には当てはまらないと確信しています、そして他のものがそこにうまく機能します(それは他の場所から、またはルートを含む他のユーザーとして実行されません) 。

$ 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
44
Nick

TextEditでファイルを開いたり保存したりしましたか?

これにより、ファイルシステムメタデータ(隔離属性) 説明した症状につながる が導入される可能性があります。

試してください:

xattr -l /usr/local/bin/bbcolors

そして

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

検疫属性が表示された場合。

86
pilcrow

pilcrowの答えは正しいですが、com.Apple.quarantine属性がディスクイメージファイルからファイルに継承されているように見えるため、ディスクイメージで作業している場合、問題は非常に混乱する可能性があるという事実に注意を向けます内部( febeling at Apple dev forums に感謝します!).

この問題を解決するには、ディスクイメージから隔離属性を削除する必要があります。

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

次に、ディスクイメージを取り出して再マウントします。その後、ファイルは再びクリーンになります。

14
KPM

この問題を解決しました。TextEditでコマンドファイルを開き、保存します。

詳細: 解決された操作は許可されていません

6
Javen.Yang
-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
0
larsks