Próbuję uruchomić skrypty bash strony trzeciej z poziomu mojego programu ruby.Jak pozyskać zmienne środowiskowe dla powłoki poleceń w skrypcie Ruby?
Zanim będę mógł je uruchomić, wymagają ode mnie pobrania pliku. W linii poleceń wszystko działa dobrze, ale w Ruby nie działa. Dowiedziałem się, że polecenia systemowe otworzą nowy proces powłoki podrzędnej, a wszelkie pozyskiwanie zostanie wykonane w tym procesie i nie będzie można go zobaczyć z procesu powłoki nadrzędnej, w którym uruchomiony jest skrypt języka Ruby. Po zakończeniu wywołania systemowego powłoka podrzędna również zostaje zabita.
Jak obejść ten problem?
Spróbuj tego. Czy oznacza to, że skrypt może zmienić zmienne środowiskowe jego zawierającego proces powłoki, a zatem wszelkie dalsze procesy podrzędne utworzone przez wywołania systemowe z dziedziczeniem? – robodisco
Nie, ale każdy proces wykonany ze skryptu Ruby odziedziczy zmienne skryptu. – Geo
Powyższe działa dla pojedynczego wątku, a ja wykonuję poniższe czynności. Ale mam pytanie, jak mogę wykorzystać połączoną kopię środowiska z IO.popen? jakoś to nie działa. z "systemem" mogę zrobić: # ... utworzyć nową "ścieżkę" tutaj subEnv = Hash.new; subEnv.merge! (ENV); # copy old environment subEnv ['PATH'] = ścieżka; # ustaw nowe wartości w kopii system (subEnv, commandLine); – peterk