Site Overlay

Ruby ENV – accesează variabilele de mediu

Ruby menține un hash numit ENV care ne oferă acces la variabilele de mediu, cum ar fi PATH sau HOME.

Le putem vedea pe toate folosind pp, imprimanta frumoasă a lui Ruby.

exemple/ruby/env.rb

require 'pp'pp ENV

De asemenea, putem accesa valoarea direct. De exemplu: puts ENV, putem adăuga noi variabile de mediu sau le putem modifica pe cele existente cuun mare avertisment. Odată ce programul nostru Ruby se termină, aceste modificări vor dispărea.

Dacă pornim un nou proces din programul nostru Ruby după ce am făcut modificări ENV, toate aceste modificări vor fi văzute de celălalt proces. Cu toate acestea, modificările nu se pot propaga în procesul care a lansat programul nostru Ruby:

De exemplu, dacă rulăm acest program:

examples/ruby/change_path_and_system.rb

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

Legătura de ieșire va arăta cam așa:

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

Prima dată când am apelat system, noul shell a văzut conținutul original al variabilei de mediu PATH. apoi am schimbat-o și am setat-o la ceva îngrozitor de rău.Când am apelat system a doua oară, noul shell a văzut noua valoare.

După ce am ajustat scriptul de mai sus, executați următoarele în shell-ul Unix/Linux

echo $PATH

Se va imprima aceeași cale ca și la primul apel la system.

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

Aceasta înseamnă că modificările noastre în codul Ruby nu au schimbat variabila de mediu pentru procesul părinte.

Este o caracteristică a majorității sau a tuturor sistemelor de operare.

Lasă un răspuns

Adresa ta de email nu va fi publicată.