2012-08-23 16 views
5

Chciałbym dziedziczyć zmienne środowiskowe w GNU Parallel. Mam kilka "skryptów" (naprawdę tylko listy poleceń, przeznaczone do użycia z GNU Parallel) z setkami linii, z których każda wywołuje różne programy zewnętrzne. Jednak ten program zewnętrzny (poza moją kontrolą) wymaga, aby kilka zmiennych środowiskowych było ustawionych, zanim jeszcze będą działać.Dziedziczenie zmiennych środowiskowych z GNU Parallel

Ustawienie/eksportowanie ich lokalnie nie pomaga, a nie widzę żadnego sposobu na dodanie tych informacji do profilu.

Dokumentacja nie zawiera niczego podobnego, a podobne strony SO sugerują zawijanie polecenia w skrypcie. Jednak wydaje się, że jest to nieeleganckie rozwiązanie. Czy istnieje sposób na wyeksportowanie bieżącego środowiska, a może na określenie wymaganych zmiennych w skrypcie?

Dzięki!

Odpowiedz

6

Działa to dla mnie:

FOO="My brother's 12\" records" 
export FOO 
parallel echo 'FOO is "$FOO" Process id $$ Argument' ::: 1 2 3 

Aby pracować dla połączeń zdalnych (poprzez ssh) trzeba podać zmienną ekspansji powłoki. parallel --shellquote może pomóc to zrobić:

parallel -S server export FOO=$(parallel --shellquote ::: "$FOO")\;echo 'FOO is "$FOO" Process id $$ Argument' ::: 1 2 3 

Jeśli to nie rozwiąże problemu, należy rozważyć ilustrujący przykład, który nie działa.

- Edit -

Spójrz na --env wprowadzony w wersji 20121022

- Edit -

Spójrz na env_parallel wprowadzono 20160322.

Powiązane problemy