2

В связи с разработкой GNU Parallel я, кажется, достиг предела длины #! (Притон). Эта линия Шебанга:

#!/bin/echo 123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789done bar

печатает это на Debian, Mandriva, SuSE, Ubuntu, Centos, RedHat:

123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k12345 ./shebang

Так что, похоже, отрубается после 128 байт. Но он делает то, что я ожидал (печатая полную строку) на FreeBSD, DragonFlyBSD и Hurd. На OpenBSD и Tru64 он ничего не печатает (?!).

Что вызывает это ограничение? Могу ли я обойти это?

Фон

--Shebang GNU Parallel позволяет писать полную параллельную команду в строке #! Поэтому несколько ограничено, если полная команда может быть только 128 символов.

Остальная часть файла используется в качестве входных данных для параллельной, поэтому команда не может быть записана там.

2 ответа2

3

Предел длины зависит от реализации. Недавно я исследовал похожий вопрос и нашел этот замечательный отчет Свена Машека о линии shebang в разных версиях Unix и Linux. Вы должны обязательно взглянуть. Это говорит о том, что, в частности, строка shebang изначально была ограничена 16 байтами.

0

Взгляните на https://stackoverflow.com/questions/10813538/shebang-line-limit-in-bash-and-linux-kernel, он содержит несколько методов, как решить эту проблему: перекомпиляция ядра или оболочка shebang скрипт (большинство пользователей предпочли бы последнее).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .