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.9, “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.10, “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.11, “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
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.7, “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=shebangfix
Para adicionar outro interpretador, defina a variável SHEBANG_LANG
. Por exemplo:
SHEBANG_LANG= lua
USES=shebangfix
Se 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/ksh
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
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)
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_GLOB
Para 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_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>.