3 votes

Pourquoi zsh autoload ne fonctionne pas dans un script ?

J'essaie de me familiariser avec les fonctions de chargement automatique dans zsh. J'ai ajouté le dossier dans lequel je stocke mes fonctions (~/.zfuncs) à mon fpath, et j'ai ajouté une fonction de test

# ~/.zfuncs/myfunction
echo "Hello world!"

Cela fonctionne bien lorsque je le charge automatiquement dans ma console :

stephanie% autoload -Uz myfunction
stephanie% myfunction
Hello world!

Lorsque j'essaie de l'exécuter dans un script, cela ne fonctionne pas :

#!/usr/bin/env zsh
# ~/scripts/test-myfunction.sh

autoload -Uz myfunction
myfunction

L'exécution du script produit une erreur :

stephanie% zsh ~/scripts/test-myfunction.sh
myfunction:5: myfunction: function definition file not found

Cela fonctionne si j'ajoute la ligne suivante au début du script :

source ~/.zshrc

Qu'est-ce que je rate ou que je fais mal ?

2voto

stephanie.anderson Points 81

J'ai trouvé la solution, grâce aux informations fournies par este réponse. J'avais besoin d'avoir la ligne ajoutant mon dossier à fpath dans mon fichier .zshenv, pas dans mon fichier .zshrc, parce que quand c'est un script ce n'est pas un script interactif.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X