Supposons que j'ai ce script
export.bash :
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
Lorsque j'exécute le script et que j'essaie d'accéder à $VAR
, je n'obtiens aucune valeur!
echo $VAR
Existe-t-il un moyen d'accéder au fichier en$VAR
exécutant simplement export.bash sans le sourcer?
bash
shell
unix
environment-variables
tarrsalah
la source
la source
source
oueval
ou ...)man source
ne fonctionnera pas carsource
est intégré à bash, vous devez exécuterhelp source
Réponses:
Réponse rapide: Non.
Mais il existe plusieurs solutions possibles.
Le plus évident, que vous avez déjà mentionné, est d'utiliser
source
ou.
d'exécuter le script dans le contexte du shell appelant:Une autre façon consiste à avoir le script, plutôt que de définir une variable d'environnement, imprimer des commandes qui définiront la variable d'environnement:
Une troisième approche consiste à avoir un script qui définit vos variables d'environnement en interne, puis invoque une commande spécifiée avec cet environnement:
Cette dernière approche peut être très utile, bien qu'elle ne soit pas pratique pour une utilisation interactive car elle ne vous donne pas les paramètres de votre shell actuel (avec tous les autres paramètres et l'historique que vous avez créés).
la source
Afin d'exporter la variable VAR en premier, la façon la plus logique et qui semble la plus efficace consiste à rechercher la variable:
ou
Maintenant, en écho depuis le shell principal, cela fonctionne
Nous allons maintenant réinitialiser VAR
Nous allons maintenant exécuter un script pour générer la variable, puis la désactiver:
le code: cat test-export.sh
Voici une façon
S'IL VOUS PLAÎT NOTE: Les exportations sont limitées au script qui exécute les exportations dans votre console principale - pour autant qu'un travail cron je l'ajouterais comme la console comme ci-dessous ... pour la partie commande encore discutable: voici comment vous feriez courir depuis votre shell:
Sur votre invite de commande (tant que l'export.bash a plusieurs valeurs d'écho)
chat v1.sh
Maintenant, tant que c'est pour votre usage - vous pouvez rendre les variables disponibles pour vos scripts à tout moment en faisant un alias bash comme ceci:
ajoutez ceci à votre .bashrc
sourcez votre fichier bashrc et vous pouvez faire comme ci-dessus à tout moment ...
Quoi qu'il en soit, revenons au reste ..
Cela l'a rendu disponible globalement puis a exécuté le script.
il suffit de l'écho, puis d'exporter sur l'écho!
chat export.bash
Maintenant dans le script ou votre console:
Essayer:
Plusieurs valeurs tant que vous savez à quoi vous vous attendez dans un autre script en utilisant la méthode ci-dessus:
chat export.bash
cat test-export.sh
Maintenant les résultats
et la dernière mise à jour finale pour attribuer automatiquement lire les VARIABLES:
Le script: cat test-export.sh
la source
Exécuter
Toutes les variables que vous sourcez à partir d'un fichier après cela seront exportées dans votre shell.
Lorsque vous avez terminé, exécutez. Cela désactivera le mode allexport.
la source
bash source export
dans GoogleTrouvé un moyen intéressant et soigné d'exporter des variables d'environnement à partir d'un fichier:
dans
env.vars
:script de test:
la source
Une autre solution de contournement qui, selon le cas, pourrait être utile: créer un autre bash qui hérite de la variable exportée. Il s'agit d'un cas particulier de @Keith Thompson réponse, sera tous ces inconvénients.
export.bash:
Maintenant:
la source
. ./export.bash
bash
tant qu'enfant du shell actuel. Et depuis qu'il aVAR
été exporté auparavant, cette invocation inclura la variable. Bien sûr, si vous tapez,exit
leVAR
va s'éteindre. Avez-vous vérifié?La réponse est non, mais pour moi j'ai fait ce qui suit
le script: myExport
un alias dans mon .bashrc
Vous le sourcez toujours, mais peut-être de cette façon il est plus utilisable et il est intéressant pour quelqu'un d'autre.
la source
Vous pouvez peut-être écrire une fonction dans ~ / .zshrc, ~ / .bashrc.
En raison de l'utilisation d'une variable à l'extérieur, vous pouvez éviter d'écrire un fichier script.
la source