2012-08-23 8 views
5

Vorrei ereditare variabili di ambiente in GNU Parallel. Ho diversi "script" (in realtà solo elenchi di comandi, progettati per essere utilizzati con GNU Parallel) con centinaia di righe ciascuna che chiamano diversi programmi esterni. Tuttavia, questi programmi esterni (fuori dal mio controllo) richiedono che siano impostate diverse variabili d'ambiente prima che possano essere eseguite.Ereditarietà delle variabili di ambiente con GNU Parallel

L'impostazione/esportazione locale non sembra essere di aiuto e non vedo alcun modo per aggiungere queste informazioni a un profilo.

La documentazione non sembra avere nulla, e pagine SO simili suggeriscono di avvolgere il comando in uno script. Tuttavia, questa sembra una soluzione poco elegante. Esiste un modo per esportare l'ambiente corrente o forse specificare le variabili richieste in uno script?

Grazie!

risposta

6

questo funziona per me:

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

per farlo funzionare per le connessioni remote (attraverso ssh) è necessario citare la variabile per l'espansione della shell. parallel --shellquote può aiutare a farlo:

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

Se questo non risolve il problema, perche non mostra un esempio che non funziona.

- Modifica -

Guarda --env introdotto nella versione 20121022

- Modifica -

Guarda env_parallel introdotto nel 20160322.