L'exportation d'une Variable d'Environnement en Ruby
Comment puis-je exporter une variable d'environnement à partir de l'intérieur d'un script Ruby pour le parent shell? Par exemple, la mise en œuvre d'un naïf mise en œuvre de la read
Bash builtin:
#!/usr/bin/ruby
varname = ARGV[0]
ENV[varname] = STDIN.gets # but have varname exported to the parent process
- J'ai vu une question similaire, mais je ne suis pas satisfait de la plate-forme de réponse spécifique.
Vous devez vous connecter pour publier un commentaire.
Réponse Simple: Vous ne pouvez pas.
Plus réponse: Vous ne pouvez pas, à moins que l'environnement d'exploitation fournit des crochets de le faire. La plupart ne le font pas. Le meilleur que vous pouvez généralement faire est d'imprimer les attributions et le parent de les exécuter.
Vous ne pouvez pas exporter les variables d'environnement du shell le ruby script s'exécute, mais
vous pouvez écrire un script ruby qui crée une source de pouvoir fichier bash.
Par exemple
Une autre alternative est que l'utilisation de
ENV[]=
n'définir des variables d'environnement pour les sous-coquille ouvert dans l'ruby processus. Par exemple:Cela peut être très puissant si vous le combinez avec la coque
exec
de commande, ce qui permettra de remplacer la coque extérieure avec ruby le processus (de sorte que lorsque vous quittez l'intérieure de la coquille, la coquille d'auto-sorties ainsi, la prévention de toute "je pensais que j'ai mis que variable dans cette coquille" confusion).J'ai juste essayé et ça a l'air bon.
Cela semble fonctionner bien au moins sur MacOSX
- Je obtenir
Semble intéressante en elle restaure l'état antérieur automatiquement
Ok - maintenant essayé un autre tant que ce n'est pas frayer 2 sous-processus
Cela agit comme le C de l'appel système et vous permet de spécifier les tuyaux et toutes les autres choses aussi.
Qu'en ruby impression d'exportation standard code :
et puis, à l'aide de shell backtick pour obtenir qu'il soit exécuté au shell comands:
cela va prendre la sortie du script et l'exécuter, des œuvres modernes coquilles, comme bash et zsh