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

관련 정보