2012-08-23 10 views
5

Me gustaría heredar variables de entorno en GNU Parallel. Tengo varios "scripts" (realmente solo listas de comandos, diseñados para usar con GNU Parallel) con cientos de líneas cada una que llaman diferentes programas externos. Sin embargo, estos programas externos (fuera de mi control) requieren que se establezcan varias variables de entorno antes de que se ejecuten.Heredar variables de entorno con GNU Parallel

Establecer/exportarlos localmente no parece ayudar, y no veo ninguna forma de agregar esta información a un perfil.

La documentación no parece tener nada de esto, y páginas SO similares sugieren envolver el comando en un script. Sin embargo, esto parece una solución poco elegante. ¿Hay alguna manera de exportar el entorno actual, o quizás especificar las variables requeridas en un script?

Gracias!

Respuesta

6

Esto funciona para mí:

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

para hacer que funcione para las conexiones remotas (a través de SSH) que necesita para citar la variable para el desarrollo del forro. parallel --shellquote puede ayudarle a hacer eso:

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

Si eso no resuelve el problema, por favor considere que muestra un ejemplo que no funciona.

- Editar -

Mira --env introducido en la versión 20121022

- Editar -

Mira env_parallel introdujo en 20160322.

Cuestiones relacionadas