我正在尝试使用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.sh
或param_a
运行param_b
,一切正常。所以我检查了$ PATH变量并发现如果我使用GNU parallel在remote-machine
上运行某些东西,它看起来像PATH=/usr/bin:/bin:/usr/sbin:/sbin
。如果我直接从机器运行它,它也有/local/bin/git
。
为什么会这样,如何克服?
提前致谢
答案 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