Подтвердить что ты не робот

Mac OS:/usr/bin/env: плохой интерпретатор: операция не разрешена

Я пытаюсь запустить этот script в Mac OS 10.7 (Lion), и я получаю сообщение об ошибке:

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

Я успешно запускаю этот script на других моих Mac. Это просто этот script загруженный и немодифицированный из Daring Fireball.

Я нашел этого человека с очень похожей проблемой, но принятый ответ состоял в том, что файловая система имела параметр "noexe" на mount. Я уверен, что не для меня, потому что я только что получил его в /usr/local/bin/, и другие вещи там работают нормально (он также не запускается из других мест или как другие пользователи, включая root).

$ which bbcolors
/usr/local/bin/bbcolors
$ ls -l /usr/local/bin/bbcolors 
[email protected] 1 nick  staff  9751 Mar 30 19:09 /usr/local/bin/bbcolors

Это Perl script не скомпилированный двоичный файл, а не тот, который должен иметь значение. Здесь дополнительная информация о том, что она стоит:

$ 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
4b9b3361

Ответ 1

Вам удалось открыть/сохранить файл в TextEdit?

Это может привести к метаданные файловой системы (атрибут карантина) приводящий к описанному вами симптому.

Try:

xattr -l /usr/local/bin/bbcolors

и

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

если вы видите атрибут карантина.

Ответ 2

Ответ на пикчер правильный, однако я обращаю ваше внимание на то, что если вы работаете с изображением на диске, проблема может быть очень запутанной, так как атрибут com.apple.quarantine кажется унаследованным из файла образа диска к файлам внутри (спасибо febeling на форумах Apple dev, чтобы заметить это!).

Чтобы решить проблему, вам нужно удалить атрибут карантина с образа диска:

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

а затем вытащите и перемонтируйте образ диска. Затем ваши файлы снова будут очищены.

Ответ 4

-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