我发现一个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 -f
bash_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