Définition des variables d'environnement à partir de l'intérieur de script TCL
J'étais en train de créer un script Tcl qui me permettra d'automatiser l'installation de logiciels. Mais le problème je suis en cours d'exécution en est que le logiciel a besoin de quelques variables d'environnement définie à l'avance et je me demandais si il est possible de définir des variables d'environnement à l'intérieur du script tcl.
Je vais essayer exec /bin/sh -c "source /path/to/.bash_profile
mais qui permettrait de créer un script shell et la source les variables y et le script tcl habitude de ramasser ensuite.
Quelqu'un peut donner d'autres idées?
OriginalL'auteur Attiq | 2015-04-17
Vous devez vous connecter pour publier un commentaire.
En Tcl vous avez le mondial
env
tableau:Et puis tout processus enfant a la variable
foo
dans son environnement.Si vous voulez mettre des variables d'environnement dans un fichier central (c'est à dire
.bash_profile
) ainsi que d'autres programmes de la source, alors il devrait être assez facile d'obtenir des Tcl pour analyser ce fichier et définissez les variables dans laenv
tableau.OriginalL'auteur glenn jackman
En général (au moins pour Linux et les systèmes de type Unix), il n'est pas possible dans un processus enfant à modifier l'environnement de la société mère. C'est un questions fréquemment posées à propos de tcl
Toutefois, si vous êtes le lancement de certains autres éléments logiciels provenant de l'intérieur du script Tcl, vous pouvez faire quelques choses, le plus simple, qui peut être de créer un fichier script shell qui les deux ensembles de variables d'environnement, puis lance votre logiciel. Ensuite, exécutez le script shell de l'intérieur Tcl.
OriginalL'auteur Edward
L'environnement est exposé via le système global de
env
tableau en Tcl. Les clés et les valeurs de la matrice par défaut pour l'environnement héritées du processus parent, d'un processus que Tcl crée va hériter d'une copie de celui-ci, et le code qui examine l'environnement dans le processus en cours (y compris directement à partir de C) pour voir l'état actuel de la.Ramasser de l'environnement situé dans un script shell est assez délicat. Le problème est qu'un
.bashrc
(par exemple) peut faire bien des choses complexes ainsi que la mise sur un tas de variables d'environnement. Par exemple, il permet également d'imprimer un message de la journée, ou conditionnellement prendre des mesures. Mais vous pouvez au moins faire une raisonnable tentative en utilisant le shell estenv
commande:C'est assez terrible, et n'est pas assez à droite (il y a des choses qui risquent de prêter à confusion) mais il est assez proche. Les valeurs seront remplies dans la
extracted_env
tableau.Je pense que c'est plus facile d'amener les gens à le configurer via des scripts Tcl...
env
serait mieux queset
pour obtenir les variables d'environnement.set
également crache des fonctions et de la plaine des variables shell.Ne savais pas que
env
était utilisable.OriginalL'auteur Donal Fellows