#! (shebang) limitação do comprimento da linha

2

Em conexão com o desenvolvimento do GNU Parallel, pareço ter atingido um limite no comprimento de #! (shebang) Este shebang-line:

#!/bin/echo 123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k123456789done bar

imprime isso no Debian, Mandriva, SuSE, Ubuntu, Centos e RedHat:

123456789a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789k12345 ./shebang

Portanto, parece ser cortado após 128 bytes. Mas faz o que eu esperaria (imprimir a linha completa) no FreeBSD, DragonFlyBSD e Hurd. No OpenBSD e Tru64 não imprime nada (?!).

O que causa essa limitação? Posso contornar isso?

Plano de fundo

O GNU Parallel's - shebang torna possível escrever o comando paralelo completo na linha #! Portanto, é um pouco limitante se o comando completo puder ser apenas 128 caracteres.

O resto do arquivo é usado como entrada para paralelo, portanto, o comando não pode ser escrito lá.

    
por Ole Tange 21.08.2013 / 06:32

2 respostas

3

O limite de duração depende da implementação. Eu recentemente investiguei uma questão semelhante e encontrei este maravilhoso relatório de Sven Mascheck sobre a linha shebang em diferentes versões do Unix e Linux. Você deveria definitivamente dar uma olhada. Ele diz que, em particular, a linha shebang originalmente era limitada a 16 bytes.

    
por 14.12.2013 / 07:44
0

Dê uma olhada no link , ele inclui um Algumas técnicas sobre como corrigir esse problema: recompilação do kernel ou um script wrapper shebang (a maioria dos usuários prefere o último).

    
por 04.01.2015 / 10:39