使用 shake 构建系统处理对 shell 环境的影响
Handling effects on the shell environment with the shake build system
我在 运行ning bash windows(不是 windows 10 上的奇特新事物,mingw bash)并从那里 shake
。据我了解,windows 上的命令可以编辑 cmd
的环境。在我的用例中,我不想假设环境将如何改变,我只想在那个改变的环境中下一个命令 运行 。这可能吗?
理想的场景应该是这样的
(Environment env, Stdout out) <- cmd Shell (Cwd dir) "path/to/script.cmd" [arg1] [arg2]
-- Do stuff with out
cmd Shell (Cwd dir) (Env env) "env/dependent/command.cmd"
我也很高兴 运行在同一个 shell 中同时执行这两个命令,即使这意味着我不能 Do stuff with out
但我不知道该怎么做做那个
我想在 makefile 术语中我想要的类似于 .ONESHELL:
Shake 中的每个 cmd
调用都是独立的,因此任何环境变量都不会持续存在。假设你想把 script.cmd
当作一个黑盒子,有两种选择:
- 运行 两个命令一步到位。类似于:
Stdout out <- cmd Shell (Cwd dir) "path/to/script.cmd" arg1 arg2 "&& env/dependent/command.cmd"
.
- 从第一个命令捕获环境并将其传递给第二个。您可以通过 运行
path/to/script.cmd .... && set
捕获环境,使用 Stdout
捕获环境,解析它,然后使用 Env
. 提供它
如果您想多次重复使用 Env
那么第二次可能更快,但两者都应该有效。
第二种方法的有效实现,包括 set
输出解析器,可用 here (by @fakedrake)。
我在 运行ning bash windows(不是 windows 10 上的奇特新事物,mingw bash)并从那里 shake
。据我了解,windows 上的命令可以编辑 cmd
的环境。在我的用例中,我不想假设环境将如何改变,我只想在那个改变的环境中下一个命令 运行 。这可能吗?
理想的场景应该是这样的
(Environment env, Stdout out) <- cmd Shell (Cwd dir) "path/to/script.cmd" [arg1] [arg2]
-- Do stuff with out
cmd Shell (Cwd dir) (Env env) "env/dependent/command.cmd"
我也很高兴 运行在同一个 shell 中同时执行这两个命令,即使这意味着我不能 Do stuff with out
但我不知道该怎么做做那个
我想在 makefile 术语中我想要的类似于 .ONESHELL:
Shake 中的每个 cmd
调用都是独立的,因此任何环境变量都不会持续存在。假设你想把 script.cmd
当作一个黑盒子,有两种选择:
- 运行 两个命令一步到位。类似于:
Stdout out <- cmd Shell (Cwd dir) "path/to/script.cmd" arg1 arg2 "&& env/dependent/command.cmd"
. - 从第一个命令捕获环境并将其传递给第二个。您可以通过 运行
path/to/script.cmd .... && set
捕获环境,使用Stdout
捕获环境,解析它,然后使用Env
. 提供它
如果您想多次重复使用 Env
那么第二次可能更快,但两者都应该有效。
第二种方法的有效实现,包括 set
输出解析器,可用 here (by @fakedrake)。