Função da declaração export -f ao criar funções no bash_profile

0

Eu encontrei um arquivo bash_profile que faz uso da declaração export -f da seguinte maneira:

# Run xelatex and BibTeX
function xelatex_bibtex {
    xelatex -shell-escape "${1}.tex" &&
        bibtex "${1}" &&
        xelatex -shell-escape "${1}.tex" &&
        xelatex -shell-escape "${1}.tex"
}
export -f xelatex_bibtex

No entanto, funções definidas sem export -f parecem funcionar perfeitamente bem:

# Search for synonyms
function syn {
    wn "${1}" -synsn
}

Qual é o papel de export -f e o que é considerado boa prática ao criar uma função de conveniência em bash_profile em relação ao uso de export ?

    
por Konrad 18.08.2018 / 13:23

1 resposta

4

Sua função é exatamente análoga àquela no caso de variáveis - isto é, para exportar a definição para ambientes herdados.

Então

$ foo() { echo bar; }
$ foo
bar

Iniciar um escudo filho

$ bash

Agora:

$ foo

Command 'foo' not found, did you mean:

  command 'roo' from snap roo (2.0.3)
  command 'fio' from deb fio
  command 'fgo' from deb fgo
  command 'fog' from deb ruby-fog
  command 'woo' from deb python-woo
  command 'fox' from deb objcryst-fox
  command 'goo' from deb goo
  command 'fop' from deb fop

See 'snap info <snapname>' for additional versions.

considerando o mesmo shell filho após exportar a função:

$ export -f foo
$ bash
$ foo
bar
    
por 18.08.2018 / 13:31