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