Site Overlay

Ruby ENV – adgang til miljøvariabler

Ruby vedligeholder en hash kaldet ENV, der giver os adgang til miljøvariabler såsom PATH eller HOME.

Vi kan se dem alle ved hjælp af pp, den smukke printer i Ruby.

examples/ruby/env.rb

require 'pp'pp ENV

Vi kan også få direkte adgang til værdien. For eksempel: sætter ENV, kan vi tilføje nye miljøvariabler eller ændre eksisterende variabler meden stor forbehold. Når vores Ruby-program slutter, vil disse ændringer være væk.

Hvis vi starter en ny proces fra vores Ruby-program, efter at vi har foretaget ændringer ENV, vil alle disse ændringer blive set af den anden proces. Men ændringerne kan ikke forplante sig til den proces, der startede vores Ruby-program:

For eksempel hvis vi kører dette program:

examples/ruby/change_path_and_system.rb

system("echo $PATH")ENV = '/nothing/here'system("echo $PATH")

Opdatet vil se nogenlunde sådan ud:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games/nothing/here

Første gang vi kaldte system, så den nye shell det oprindelige indhold af miljøvariablen PATH.Derefter ændrede vi den og satte den til noget forfærdeligt dårligt.Da vi kaldte system anden gang, så den nye shell den nye værdi.

Når vi har tunet ovenstående script, skal du udføre følgende i Unix/Linux-shellen

echo $PATH

Det vil udskrive den samme sti som ved det første kald til system.

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Det betyder, at vores ændringer i Ruby-koden ikke har ændret miljøvariablen for den overordnede proces.

Dette er en funktion i de fleste eller alle operativsystemer.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.