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에서 어떻게 작동하게 합니까?