【发布时间】:2012-07-09 14:13:49
【问题描述】:
我正在进行的一个项目使用 gnu make 进行测试。我想在没有 make 实现但有 POSIX shell 的平台上进行测试。
是否可以创建一个脚本(最好在 python 中)可以“缝合”一个远程 shell 来制作,并将其放入 make 的 SHELL 环境变量中?
如果没有,还有其他人可以想到的方法吗?
【问题讨论】:
我正在进行的一个项目使用 gnu make 进行测试。我想在没有 make 实现但有 POSIX shell 的平台上进行测试。
是否可以创建一个脚本(最好在 python 中)可以“缝合”一个远程 shell 来制作,并将其放入 make 的 SHELL 环境变量中?
如果没有,还有其他人可以想到的方法吗?
【问题讨论】:
有可能。
创建一个将命令转发到远程主机的脚本。例如:
#!/bin/bash
shift # remove -c argument
exec ssh remote_host "$@"
并使其可执行 (chmod +x)。
然后在 Makefile 中:
SHELL := './my_shell.sh'
all :
@echo `hostname` is making $@
输出:
$ make
remote_host.peer1.net is making all
【讨论】:
make 产生的进程继承所有环境变量。 ssh默认情况下不会将环境变量传递给远程主机。 ssh 客户端和服务器必须配置为发送和接受环境变量。