57

このスクリプトをMacOS10.7(Lion)で実行しようとすると、次のエラーが発生します。

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

私は他のMacでこのスクリプトを正常に実行しました。これは、DaringFireballからダウンロードされて変更されていないこのスクリプトだけです。

私はこの人が非常によく似た問題を抱えていることを発見しましたが、受け入れられた答えは、ファイルシステムにマウント時に「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

テキストエディットでファイルを開いたり保存したりしましたか?

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

試す:

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 devフォーラムでのfebelingに感謝します!)。

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

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

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

于 2012-12-20T13:06:11.560 に答える
6

この問題は解決しました。テキストエディットでコマンドファイルを開いて保存してください。

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

于 2012-11-13T02:44:39.780 に答える
0
-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
于 2012-03-31T03:05:23.483 に答える
0

BBEdit(CLI :)でシェルスクリプトを作成した後、これに遭遇しましたbbedit ~/bin/foo。macOSサンドボックスセキュリティ機能は、BBEditによって変更されたファイルを自動的に隔離しているようです—ファイルが実行可能であり、BBEditによって特定の方法でアクセスされている場合。

修正は簡単です:[設定]>[アプリケーション]>[許可]

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

于 2021-02-02T08:35:54.350 に答える