environnement et bash
tablier
Membre
en AppleScript je fais:
set leTexte to do shell script "export AEDebugSends=1; export AEDebugReceives=1 ; /Users/msaro/monAppli.app ; unset AEDebugSends ; unset AEDebugReceives"
ça marche parfaitement. J'essaie maintenant de me passer d'AppelScript. J'ai lancé le terminal et j'ai succéssivement entré les trois commandes:
export AEDebugSends=1; export AEDebugReceives=1
/Users/msaro/monAppli.app
unset AEDebugSends ; unset AEDebugReceives
ça marche parfaitement également j'obtiens les résultats escomptés.
je souhaite faire cela par programmation maintenant.
Mon idée est de créer les deux variables d'environnement, puis d'utiliser un NSTask/NSPipe pour faire exécuter le programme et enfin de supprimer les deux variables d'environnement.
j'ai voulu mettre les variables d'environnement en faisant un ~/.bash_login avec:
export AEDebugSends=1; export AEDebugReceives=1
puis j'ai fait un ~/.bash_logout avec:
unset AEDebugSends ; unset AEDebugReceives
je lance le terminal. j'ai l'erreur: -bash: export: command not found et seul la variable AEDebugReceives=1 est mise en place!
Je ne comprends pas pourquoi seule la deuxième variable est créée!
Si je mets le ~/.bash_login sur deux lignes:
export AEDebugSends=1
export AEDebugReceives=1
alors plus aucune variable n'est créée!
:-\\ Comment fait-on pour créer par programmation des variables d'environnement pour bash? ou doit-on les mettre?
set leTexte to do shell script "export AEDebugSends=1; export AEDebugReceives=1 ; /Users/msaro/monAppli.app ; unset AEDebugSends ; unset AEDebugReceives"
ça marche parfaitement. J'essaie maintenant de me passer d'AppelScript. J'ai lancé le terminal et j'ai succéssivement entré les trois commandes:
export AEDebugSends=1; export AEDebugReceives=1
/Users/msaro/monAppli.app
unset AEDebugSends ; unset AEDebugReceives
ça marche parfaitement également j'obtiens les résultats escomptés.
je souhaite faire cela par programmation maintenant.
Mon idée est de créer les deux variables d'environnement, puis d'utiliser un NSTask/NSPipe pour faire exécuter le programme et enfin de supprimer les deux variables d'environnement.
j'ai voulu mettre les variables d'environnement en faisant un ~/.bash_login avec:
export AEDebugSends=1; export AEDebugReceives=1
puis j'ai fait un ~/.bash_logout avec:
unset AEDebugSends ; unset AEDebugReceives
je lance le terminal. j'ai l'erreur: -bash: export: command not found et seul la variable AEDebugReceives=1 est mise en place!
Je ne comprends pas pourquoi seule la deuxième variable est créée!
Si je mets le ~/.bash_login sur deux lignes:
export AEDebugSends=1
export AEDebugReceives=1
alors plus aucune variable n'est créée!
:-\\ Comment fait-on pour créer par programmation des variables d'environnement pour bash? ou doit-on les mettre?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Maintenant, quand on utilise NSTask, il est possible de passer des variables d'environnement perso en utilisantÂ
Evidemment cela a pour conséquence d'écraser les autres variables d'environnement. Il suffit donc de récupérer l'environnement courant, de lui rajouter les variables que l'on veut, puis de lancer la tâche. Pour récupérer l'environnement courant et y rajouter de nouvelles variables:
Je vais enlever les 'unset' pour voir. Quand je travaille dans le terminal (sans en ressortir), ils sont nécessaires car "export AEDebugSends=0; export AEDebugReceives=0" ne dévalident pas le "Apple Event logging", contrairement à ce qui est dit dans la doc Apple.
J'ai essayé de modifier les variables d'environnement de la manière que tu décris. Je me suis planté quelque part car celà n'a pas marché (manque d'expérience!).
La solution que j'ai retenue c'est de faire un NSTask avec:
adresse: "bin/bash"
arg1: "-c"
arg2: "export AEDebugSends=1 ; export AEDebugReceives=1 ; '/Users/msaro/monAppli.app' ; unset AEDebugSends ; unset AEDebugReceives"
:P Ce qui résoud mon problème! même si j'ai l'impression d'exécuter bash dans bash !!