问题场景
在 Linux 的 bash 等 shell 环境中,可以轻松的:
EDITOR=nvim ./Morfans.cn.sh
在指定环境变量 EDITOR为 nvim 的情况下调用 Morfans.cn.sh
。
但是在 Windows 的 powershell 下竟然不能这样做,那么怎么办呢。。
这样给一个命令临时指定环境变量有个常见的场景:
有一个第三方的脚本,可以通过环境变量来控制其行为(不是通过参数),且不想修改脚本
解决
😉 最简单的方案是这样的:
推荐这样,虽然不能完全模仿 bash 的用法,但是这样最简便,无需另外下载脚本、二进制等
# 先定义环境变量,然后删除
~
❯ $env:FOO = '233'; Write-Host $env:FOO
233
~
❯ rm Env:\FOO
放在一行:
$env:FOO = '233'; Write-Host $env:FOO; rm Env:\FOO
复杂实现仿 bash 可以用脚本:
使用方法:
with-env.ps1 FOO=foo BAR=bar 你的 命令
# 支持 dot-env 文件
with-env.ps1 .\.env OTHER_ENV=env 你的 命令
或者可以转换思路,换一个 shell 或使用 Cygwin、Gow、WSL等等。
发表回复