Desde o macOS 10.15 (Catalina), o shell padrão mudou de bash para zsh. Uma das coisas que estou enfrentando é que não consigo fazer minhas próprias funções globais funcionarem. Eu costumava exportá-los de .bash_profile, mas zsh parece não conhecer o conceito de exportação de funções.
Digamos que eu tenha isso:
function greet { echo "Hello $1, how are you today" }
Se eu executar hello RocketNuts
no shell, ele diz Hello RocketNuts, how are you today
. Até agora tudo bem.
Agora quero tornar esta função globalpara que também esteja disponível em scripts.
Eu tentei:
- colocando-o
.zshrc
- colocando-o
.zshenv
Também tentei criar um subdiretório ~/myfunctions
e um arquivo chamado ~/myfunctions/greet
que contém:
function greet { echo "Hello $1, how are you today" }
greet "$@"
e então em ~/.zshrc
ou ~/.zshenv
eu adiciono:
fpath=( ~/myfunctions "${fpath[@]}" )
autoload -Uz greet
No entanto, nenhum desses métodos disponibiliza a greet
função em scripts.
Do shell, todos funcionam bem. Com qualquer um dos métodos, posso invocar a greet
função manualmente no shell.
Mas se eu tiver um arquivo test.sh
que faça greet Somebody
isso, ele sempre diz "saudação: comando não encontrado".
Como faço para que isso funcione no zsh?