use subprocess::Exec;
fn main() -> std::io::Result<()> {
let output = Exec::shell("echo $GREETING")
.env("GREETING", "Hello from subprocess!")
.capture()?
.stdout_str();
println!("With custom env: {}", output.trim());
let output = Exec::shell("echo $FIRST $SECOND")
.env_extend([("FIRST", "Hello"), ("SECOND", "World")])
.capture()?
.stdout_str();
println!("Multiple vars: {}", output.trim());
let output = Exec::shell("env | wc -l")
.env_clear()
.env("PATH", std::env::var("PATH").unwrap_or_default())
.env("ONLY_VAR", "value")
.capture()?
.stdout_str();
println!("Minimal env has {} variables", output.trim());
let output = Exec::shell("echo ${HOME:-not set}")
.env_remove("HOME")
.capture()?
.stdout_str();
println!("Without HOME: {}", output.trim());
Ok(())
}