2 votes

Exporter une fonction bash dans .profile ou .xprofile tue X pendant la connexion

Je tente d'exporter une fonction bash lors de la connexion à Gnome en utilisant l'un des scripts de démarrage de l'interpréteur de commandes de démarrage de session. J'ai essayé de le faire dans ~/.profile et ~/.xprofile mais cela provoque la mort de X et redémarre à l'écran de connexion.

Je suis capable d'exporter des variables d'environnement à partir de ces scripts sans problèmes lors de la connexion à Gnome ; seulement l'exportation d'une fonction (n'importe quelle fonction, peu importe le contenu) tue X.

Je peux également sourcer les deux scripts à partir d'un terminal et la fonction est exportée comme prévu sans aucun problème. La fonction est également bien exportée si les scripts sont invoqués par un interpréteur de commandes de démarrage de session bash (bash -l) à partir d'un terminal.

Pourquoi l'exportation d'une fonction lors de la connexion à Gnome tue X ? / Puis-je faire quelque chose pour le corriger ?

(Je réalise que je pourrais exporter la fonction à partir de .bashrc, mais utiliser un profil est plus pratique dans ma situation et j'aimerais comprendre pourquoi ce crash se produit.)

2voto

Steve Karg Points 11

POSIX sh n'autorise pas l'exportation de fonctions, mais bash le permet. ~/.profil est sourcé par un shell POSIX, pas par bash. Il est également plutôt inutile d'exporter des fonctions puisque seul bash peut les lire et les utiliser. Il suffit de mettre les fonctions dans ~/.bashrc et de ne pas les exporter.

0voto

maljub01 Points 101

La réponse acceptée est incorrecte. Les shells compatibles avec POSIX permettent bel et bien d'exporter des fonctions.

Le problème que vous avez rencontré est probablement dû au fait que vous utilisiez le mot-clé function. La syntaxe POSIX n'utilise pas function. Supprimez le mot-clé function et assurez-vous d'avoir des parenthèses après le nom de la fonction et la connexion fonctionnera à nouveau.

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