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_REGEXConté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_GLOBConté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_FILESConté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_LANGA lista de interpretadores suportados.
interp_CMDO caminho para o interpretador de comandos no FreeBSD. O valor padrão é ${LOCALBASE}/bin/.interp
interp_OLD_CMDA 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
Estes vão sempre ser parte da variável :interp_OLD_CMD"/usr/bin/env.interp" /bin/interp /usr/bin/interp /usr/local/bin/interp
A variável 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 interp_OLD_CMDUSES=shebangfix”.
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
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.
USES=shebangfixPara adicionar outro interpretador, defina a variável SHEBANG_LANG. Por exemplo:
SHEBANG_LANG= lua
USES=shebangfixSe isto não estiver definido ainda, e não tiver valores padrão para e interp_OLD_CMD a entrada Ksh poderia ser definida como:interp_CMD
SHEBANG_LANG= ksh
ksh_OLD_CMD= "/usr/bin/env ksh" /bin/ksh /usr/bin/ksh
ksh_CMD= ${LOCALBASE}/bin/kshAlguns 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
USES=shebangfix com a variável SHEBANG_REGEXPara corrigir todos os arquivos em ${WRKSRC}/scripts finalizados com .pl, .sh ou .cgi faça assim:
USES= shebangfix SHEBANG_REGEX= ./scripts/.*\.(sh|pl|cgi)
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.
USES=shebangfix com a variável SHEBANG_GLOBPara corrigir todos os arquivos em ${WRKSRC} finalizados com .pl ou .sh, faça assim:
USES= shebangfix SHEBANG_GLOB= *.sh *.pl
USES=shebangfix com a variável SHEBANG_FILESPara 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>.