GNU并行更改PATH环境变量

时间:2013-12-29 14:12:45

标签: parallel-processing environment-variables gnu gnu-parallel

我正在尝试使用GNU Parallel来在远程计算机上运行带有多个参数的脚本。 这看起来有点像:

parallel --onall -S remote-machine  /shared/location/script.sh ::: param_a param_b

/shared/location/script.sh正在使用git。所以我收到了这个错误:

git: command not found

如果我手动登录remote-machine并使用/shared/location/script.shparam_a运行param_b,一切正常。所以我检查了$ PATH变量并发现如果我使用GNU parallel在remote-machine上运行某些东西,它看起来像PATH=/usr/bin:/bin:/usr/sbin:/sbin。如果我直接从机器运行它,它也有/local/bin/git

为什么会这样,如何克服?

提前致谢

1 个答案:

答案 0 :(得分:6)

GNU Parallel使用ssh进行远程执行,因此$ PATH与运行非交互式ssh会话时看到的相同:

ssh server echo '$PATH'
parallel -S server --onall {} '$PATH' ::: echo

您登录时看到不同$ PATH的原因是交互式会话可能会设置另一个$ PATH。

您可以使用--env:

强制parallel复制环境变量
parallel --env PATH -S server --onall {} '$PATH' ::: echo