17.81. shebangfix

Argumentos possíveis: (none)

Muitos softwares usam locais incorretos para interpretadores de scripts, principalmente /usr/bin/perl e /bin/bash. A macro shebangfix corrige linhas shebang em scripts listados em SHEBANG_REGEX, SHEBANG_GLOB ou SHEBANG_FILES.

SHEBANG_REGEX

Contém uma expressão regular estendida e é usado com o argumento -iregex do find(1). Veja Exemplo 17.11, “USES=shebangfix com a variável SHEBANG_REGEX.

SHEBANG_GLOB

Contém uma lista de padrões usados com o argumento -name do find(1). Veja Exemplo 17.12, “USES=shebangfix com a variável SHEBANG_GLOB.

SHEBANG_FILES

Contém uma lista de arquivos ou globs sh(1). A macro shebangfix é executada a partir de ${WRKSRC}, assim SHEBANG_FILES pode conter caminhos relativos a ${WRKSRC}. Ele também pode lidar com caminhos absolutos se arquivos fora de ${WRKSRC} requisitarem uma correção. Veja Exemplo 17.13, “USES=shebangfix com a variável SHEBANG_FILES.

Atualmente Bash, Java, Ksh, Lua, Perl, PHP, Python, Rubi, Tcl e Tk são suportados por padrão.

Aqui estão três variáveis de configuração:

SHEBANG_LANG

A lista de interpretadores suportados.

interp_CMD

O caminho para o interpretador de comandos no FreeBSD. O valor padrão é ${LOCALBASE}/bin/interp.

interp_OLD_CMD

A lista de invocações erradas de interpretadores. Estes são tipicamente caminhos obsoletos, ou caminhos usados ​​em outros sistemas operacionais que estão incorretos no FreeBSD. Eles serão substituídos pelo caminho correto na variável interp_CMD.

Nota:

Estes vão sempre ser parte da variável interp_OLD_CMD:"/usr/bin/envinterp" /bin/interp /usr/bin/interp /usr/local/bin/interp.

Dica:

A variável interp_OLD_CMD contém vários valores. Qualquer entrada com espaços deve estar entre aspas. Veja Exemplo 17.9, “Especificando todos os Caminhos ao Adicionar um Interpretador para USES=shebangfix.

Importante:

A correção de shebangs é feita durante a fase patch. Se os scripts forem criados com shebangs incorretos durante a fase build, o processo de build (por exemplo, o script configure, ou o Makefiles) deve ser corrigido ou ter o caminho certo (por exemplo, com CONFIGURE_ENV, CONFIGURE_ARGS, MAKE_ENV ou MAKE_ARGS) para gerar as shebangs certas.

Os caminhos corretos para os interpretadores suportados estão disponíveis em interp_CMD.

Dica:

Quando usado com USES=python, e o objetivo é apenas consertar os shebangs, mas a dependência de Python em si não é desejada, use a variável PYTHON_NO_DEPENDS=yes.

Exemplo 17.8. Adicionando outro interpretadoror para USES=shebangfix

Para adicionar outro interpretador, defina a variável SHEBANG_LANG. Por exemplo:

SHEBANG_LANG=	lua

Exemplo 17.9. Especificando todos os Caminhos ao Adicionar um Interpretador para USES=shebangfix

Se isto não estiver definido ainda, e não tiver valores padrão para interp_OLD_CMD e interp_CMD a entrada Ksh poderia ser definida como:

SHEBANG_LANG=	ksh
ksh_OLD_CMD=	"/usr/bin/env ksh" /bin/ksh /usr/bin/ksh
ksh_CMD=	${LOCALBASE}/bin/ksh

Exemplo 17.10. Adicionando uma Localização Estranha para um Interpretador

Alguns softwares usam localizações estranhas para um interpretador. Por exemplo, um aplicativo pode esperar que Python esteja localizado em /opt/bin/python2.7. O caminho estranho a ser substituído pode ser declarado no Makefile do port:

python_OLD_CMD=	/opt/bin/python2.7

Exemplo 17.11. USES=shebangfix com a variável SHEBANG_REGEX

Para corrigir todos os arquivos em ${WRKSRC}/scripts finalizados com .pl, .sh ou .cgi faça assim:

USES=	shebangfix
SHEBANG_REGEX=	./scripts/.*\.(sh|pl|cgi)

Nota:

SHEBANG_REGEX é usada executando find -E, que usa expressões regulares modernas, também conhecidas como expressões regulares estendidas. Veja re_format(7) para maiores informações.


Exemplo 17.12. USES=shebangfix com a variável SHEBANG_GLOB

Para corrigir todos os arquivos em ${WRKSRC} finalizados com .pl ou .sh, faça assim:

USES=	shebangfix
SHEBANG_GLOB=	*.sh *.pl

Exemplo 17.13. USES=shebangfix com a variável SHEBANG_FILES

Para corrigir os arquivos script/foobar.pl e script/*.sh dentro de ${WRKSRC}, faça assim:

USES=	shebangfix
SHEBANG_FILES=	scripts/foobar.pl scripts/*.sh

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.