스크립트에서 사용할 수 있는 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항상 "Hello: 명령을 찾을 수 없습니다"라고 표시됩니다.

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

관련 정보