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
Ответы
Ответ 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
а затем вытащите и перемонтируйте образ диска. Затем ваши файлы снова будут очищены.
Ответ 3
Я решил эту проблему. Откройте командный файл с помощью TextEdit и сохраните его.
Дополнительная информация: Разрешенная операция не разрешена
Ответ 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