在bash_profile中创建函数时export -f语句的作用

在bash_profile中创建函数时export -f语句的作用

我发现一个bash_profile文件使用export -f声明方式如下:

# 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

然而,没有定义的函数export -f似乎工作得很好:

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

有什么作用export -fbash_profile在使用方面创建便利功能时什么被认为是好的做法export

答案1

它的作用与变量的作用完全相似——即将定义导出到继承的环境中。

所以

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

启动一个子 shell

$ bash

现在:

$ 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.

而导出函数后的相同子 shell:

$ export -f foo
$ bash
$ foo
bar

相关内容