스크립트에서 사용할 수 있는 zsh(macOS)에서 전역 함수를 정의하는 방법은 무엇입니까?

스크립트에서 사용할 수 있는 zsh(macOS)에서 전역 함수를 정의하는 방법은 무엇입니까?

macOS 10.15(Catalina)부터 기본 셸이 bash에서 zsh로 변경되었습니다. 제가 겪고 있는 문제 중 하나는 자체 전역 기능을 작동시킬 수 없다는 것입니다. 나는 이것을 .bash_profile에서 내보내곤 했지만 zsh는 함수 내보내기의 개념을 모르는 것 같습니다.

내가 이것을 가지고 있다고 가정 해 봅시다 :

function greet { echo "Hello $1, how are you today" }

hello RocketNuts그런 다음 쉘에서 실행하면 다음과 같이 표시됩니다 Hello RocketNuts, how are you today. 여태까지는 그런대로 잘됐다.

이제 이 함수를 전역으로 만들고 싶습니다.스크립트에서도 사용할 수 있도록.

나는 시도했다:

  • 그것을 넣는.zshrc
  • 그것을 넣는.zshenv

또한 다음을 포함하는 하위 디렉터리 ~/myfunctions와 파일을 만들어 보았습니다 .~/myfunctions/greet

function greet { echo "Hello $1, how are you today" }
greet "$@"

그런 다음 ~/.zshrc또는 ~/.zshenv다음 중 하나를 추가합니다.

fpath=( ~/myfunctions "${fpath[@]}" )
autoload -Uz greet

그러나 이러한 방법 중 어느 것도 greet스크립트에서 함수를 사용할 수 없게 만듭니다.

쉘에서는 모두 잘 작동합니다. 어느 방법을 사용하든 greet셸에서 수동으로 함수를 호출할 수 있습니다 .

test.sh하지만 이를 수행 하고 실행하는 파일이 있으면 greet Somebody항상 "인사: 명령을 찾을 수 없습니다"라고 표시됩니다.

zsh에서 어떻게 작동하게 합니까?

관련 정보