Estou recebendo muitos erros no FreeBSD 10.1 amd64 porque eu uso o Bash e meu .bash_profile
exporta algumas funções. Quando eu tento rodar um script de teste no FreeBSD, isso resulta em:
$ ./cryptest.sh
bash: Skipping importing function definition for 'sh_perms': --import-functions required.
bash: Skipping importing function definition for 'sh_gclean': --import-functions required.
...
make: environment corrupt; missing value for BASH_FUNC_sh_clean
make: environment corrupt; missing value for BASH_FUNC_sh_clean
make: environment corrupt; missing value for BASH_FUNC_sh_clean
...
Eu não estou encontrando muita informação, mas eu encontrei menção de IMPORTFUNCTIONS
na página do Bash do FreeBSD :
The default can also be changed in the port by selecting the IMPORTFUNCTIONS option ...
Eu adicionei o seguinte a .bash_profile
, desconectei, fiz logon novamente (e até mesmo source'd .bash_profile
), mas o problema persiste:
IS_FREEBSD=$(uname -s | grep -i -c freebsd)
if [[ ("$IS_FREEBSD" -ne "0") ]]; then
export IMPORTFUNCTIONS=y
fi
Eu sei que o FreeBSD CVE está remediando, mas eu realmente não me importo com isso. Eu não sou um administrador do FreeBSD, e eu me encolho pensando que vou precisar de uma semana tentando consertar isso procurando informações. Eu só ligo e faço o login nesta máquina algumas vezes por ano para testar algum software, então eu preciso que a máquina funcione.
Como consertar o shell para funcionar como esperado?
Aqui está um exemplo de uma função; e não há muito para isso. Ele me permite rapidamente redefinir uma filial em um repositório do Git e atualizá-lo em um comando. Eu os uso porque o Git tem uma propensão a aceitar fluxos de trabalho simples, complicando-os ou tornando-os difíceis de serem impossíveis (você deve ver como é difícil excluir um ramo de desenvolvimento).
function sh_gpull {
if [[ (-z $(git rev-parse HEAD 2>/dev/null)) ]]; then
echo "$PWD is not a Git repository"
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
echo "Branch:" $(git rev-parse --abbrev-ref HEAD 2>/dev/null)
git reset --hard HEAD 2>/dev/null
git pull
[[ "$0" = "$BASH_SOURCE" ]] && exit 0 || return 0
}
...
export -f sh_gpull ...