Osx

在 bash_profile 中創建函式時 export -f 語句的作用

  • August 18, 2018

我遇到了一個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

它的作用與變數的作用完全相似——即將定義導出到繼承的環境。

所以

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

啟動子外殼

$ 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

引用自:https://unix.stackexchange.com/questions/463344