bash_profileから関数を生成するときのエクスポート-f文の役割

bash_profileから関数を生成するときのエクスポート-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

サブシェルの起動

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

そして関数をエクスポートした後、同じサブシェルは次のようになります。

$ export -f foo
$ bash
$ foo
bar

関連情報