Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/08/2022, à 12:14

Tawal

[Résolu] [awk] Où stocker ses fonctions personnelles ?

Hello,

J'ai plusieurs scripts awk/gawk qui utilisent une ou plusieurs mêmes fonctions personnelles.
Je sais que l'on peut utiliser :

@include "nom_du_fichier_fonction"

Mais le seul endroit que j'ai trouvé pour que cela fonctionne est de stocker les fichiers fonction dans /usr/share/awk.

Y-a-t-il un autre endroit plus judicieux pour placer ses propres fonctions personnelles ?

Merci.

Dernière modification par Tawal (Le 21/08/2022, à 13:49)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#2 Le 21/08/2022, à 12:21

kamaris

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

En renseignant la variable AWKPATH ?

Hors ligne

#3 Le 21/08/2022, à 12:22

Hizoka

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

Salut,

l'équivalent utilisateur de /usr/share est ~/.local/share

Tu pourrais peut-être les mettre dans ~/.local/share/awk, non ?


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#4 Le 21/08/2022, à 12:25

Tawal

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

Oui, je connais aussi cette variable.
Mais j'utilise le shebang : #!/bin/gawk -f
À partir de là, je ne peux plus renseigner cette variable dans le script (ou du moins je ne sais pas comment).
Je peux la renseigner sur la ligne de commande, mais ce n'est pas user-friendly.
J'avais pensé à la renseigner dans mon ~/.bashrc avec un export. Mais cela va-t-il fonctionner si je fais un lanceur pour mon script ?

Edit:
Merci Hizoka.
Mais je ne veux pas limiter ces fonctions à un seul utilisateur wink

Dernière modification par Tawal (Le 21/08/2022, à 12:33)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#5 Le 21/08/2022, à 12:37

kamaris

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

Tawal a écrit :

J'avais pensé à la renseigner dans mon ~/.bashrc avec un export. Mais cela va-t-il fonctionner si je fais un lanceur pour mon script ?

Plutôt dans ~/.profile je pense, en sourçant éventuellement ce fichier dans ~/.bash_profile pour que ce soit actif en tty (de mémoire).

Tawal a écrit :

Mais je ne veux pas limiter ces fonctions à un seul utilisateur wink

S'il s'agit d'un chemin commun aux différents utilisateurs, tu peux mettre ça dans /etc/environment sinon (pas d'export dans ce cas).

Dernière modification par kamaris (Le 21/08/2022, à 12:44)

Hors ligne

#6 Le 21/08/2022, à 12:44

MicP

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

Bonjour

Si tu créé un répertoire ~/bin/
ce répertoire sera automatiquement (à partir de la prochaine ouverture de session) ajouté dans la liste des chemins affectée comme valeur à la variable PATH

Ce qui fait que tu n'auras pas besoin de spécifier le chemin absolu de ton script : il suffira d'appeler ce script simplement en donnant son nom et ce depuis n'importe quel répertoire.

Donc, tu pourrais mettre tous tes scripts dans ce répertoire
Bien sûr, il faudra que tes fichiers scripts aient l'attribut exécutable pour le propriétaire du script.

Dernière modification par MicP (Le 21/08/2022, à 12:46)

Hors ligne

#7 Le 21/08/2022, à 12:58

Tawal

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

@kamaris :
Bien vu de renseigner la variable AWKPATH dans /etc/environment.
Je pense que c'est la solution que je vais retenir wink
Merci.

@MicP :
Ce n'est pas le sujet ici.
Ce n'est pas un problème d'exécution ou d'appel des scripts. (J'ai déjà mon dossier ~/bin).
Le problème est d'avoir accès aux fonctions awk que je crée directement dans mon script awk.
Et ce sans dupliquer la fonction dans chaque script wink


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#8 Le 21/08/2022, à 13:04

MicP

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

Ooops ! désolé pour le bruit,
j'avais lu un peu trop vite sans faire attention à l'include

Hors ligne

#9 Le 21/08/2022, à 14:29

Watael

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

je ne suis pas sûr de comprendre le problème.
tu mets tes fichiers à sourcer/inclure n'importe où, pourvu que tu indiques le chemin (absolu, de préférence) à la commande @include.
pourquoi pas dans un sous-répertoire (include) du répertoire où tu places tes scripts ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 21/08/2022, à 15:00

Tawal

Re : [Résolu] [awk] Où stocker ses fonctions personnelles ?

Ah oui, en effet, cela fonctionne.
Je ne sais pas pourquoi, mais il m'avait semblé lire qu'un nom de fichier ne pouvait pas être désigné par un chemin (relatif ou absolu).
C'est bien le contraire en fait :

Manuel GNU de gawk a écrit :

The file name can, of course, be a pathname.  For example:
     @include "../io_funcs"
and:
     @include "/usr/awklib/network"
are both valid.

Donc, il n'y avait pas de problème à la source big_smile
Du coup, c'est plus souple à l'utilisation car on peut très avoir plusieurs répertoires contenant des fonctions (ou autres) et les appeler directement par leur chemin absolu.
Et puis, c'est plus lisible car on sait où sont cherchés ces "include".
Merci.


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne