Parallel processing GNU并行更改路径环境变量

Parallel processing GNU并行更改路径环境变量,parallel-processing,environment-variables,gnu,gnu-parallel,Parallel Processing,Environment Variables,Gnu,Gnu Parallel,为了在远程机器上运行带有多个参数的脚本,我正在尝试使用GNU并行。 这看起来有点像: parallel --onall -S remote-machine /shared/location/script.sh ::: param_a param_b /shared/location/script.sh正在使用git。所以我得到了这个错误: git: command not found 如果我手动登录到远程计算机,并使用参数a或参数b运行/shared/location/script.sh,

为了在远程机器上运行带有多个参数的脚本,我正在尝试使用GNU并行。 这看起来有点像:

parallel --onall -S remote-machine  /shared/location/script.sh ::: param_a param_b
/shared/location/script.sh
正在使用git。所以我得到了这个错误:

git: command not found
如果我手动登录到
远程计算机
,并使用
参数a
参数b
运行
/shared/location/script.sh
,一切正常。所以我检查了$PATH变量,发现如果我使用GNU并行在
远程机器上运行某个东西,它看起来像
PATH=/usr/bin:/bin:/usr/sbin:/sbin
。如果我直接从机器上运行它,它也有
/local/bin/git

为什么会这样?如何克服


提前感谢

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

ssh server echo '$PATH'
parallel -S server --onall {} '$PATH' ::: echo
登录时看到不同的$PATH的原因是交互式会话可能会设置另一个$PATH

可以使用--env强制
parallel
复制环境变量:


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

ssh server echo '$PATH'
parallel -S server --onall {} '$PATH' ::: echo
登录时看到不同的$PATH的原因是交互式会话可能会设置另一个$PATH

可以使用--env强制
parallel
复制环境变量:

您可能还发现,
--wd.
有助于将
并行
cd
安排到ssh主机上的同一目录。您还可能发现,
--wd.
有助于将
并行
cd
安排到ssh主机上的同一目录。