Site Overlay

Ruby ENV – tillgång till miljövariabler

Ruby upprätthåller en hash kallad ENV som ger oss tillgång till miljövariabler som PATH eller HOME.

Vi kan se dem alla med hjälp av pp, Rubys vackra skrivare.

examples/ruby/env.rb

require 'pp'pp ENV

Vi kan också komma åt värdet direkt. Till exempel: puts ENV kan vi lägga till nya miljövariabler eller ändra befintliga medett stort förbehåll. När vårt Ruby-program avslutas kommer dessa ändringar att vara borta.

Om vi startar en ny process från vårt Ruby-program efter att vi har gjort ändringar ENV, kommer alla dessa ändringar att ses av den andra processen. Ändringarna kan dock inte spridas till den process som startade vårt Ruby-program:

Till exempel om vi kör det här programmet:

examples/ruby/change_path_and_system.rb

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

Utgången kommer att se ut ungefär så här:

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

Första gången vi kallade system så såg det nya skalet originalinnehållet i miljövariabeln PATH.Sedan ändrade vi den och ställde in den till något fruktansvärt dåligt.När vi kallade system för andra gången såg det nya skalet det nya värdet.

Efter att ha trimmat ovanstående skript utför följande i Unix/Linux-skalet

echo $PATH

Det kommer att skriva ut samma sökväg som vid det första anropet till system.

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

Detta betyder att våra ändringar i Ruby-koden inte har förändrat miljövariabeln för den överordnade processen.

Det här är en funktion i de flesta eller alla operativsystemen.

Lämna ett svar

Din e-postadress kommer inte publiceras.