【问题标题】:env command alternative for windows powershell/cmdwindows powershell/cmd的env命令替代
【发布时间】:2022-09-27 19:09:31
【问题描述】:

我在 Linux 中看到了一件很酷的事情,想知道它是否也可以在 Windows 中使用。为了在自定义环境中运行另一个程序而不修改当前程序,在 Linux 中我们使用env 命令,如下所示: env USERNAME=\"Test\" PASSWORD=\"Test\" npm run e2e:test。这里基本上它所做的是 e2e 测试开始运行(它可以是任何技术中的任何类型的进程,而不仅仅是 nodejs 中的 e2e 测试)但使用测试用户凭据而不是使用预定义的实际用户凭据。

如何在 Windows 中实现这一点?

    标签: linux windows environment-variables


    【解决方案1】:

    使用将在其上下文中执行的命令行脚本调用cmd.exe。实际上是这样的:

    cmd.exe /c "set USERNAME=Test && set PASSWORD=Test && npm run mytest"
    

    作为完整的 e2e 测试,请在控制台窗口中尝试:

    1. 创建一个小的 javascript 脚本来输出一个环境变量:
      C:\temp> echo console.log(process.env.myvar); >test.js
      
      1. 确认您的shell中没有设置环境变量,并且调用脚本也没有找到该变量:
      C:\temp> set myvar
      Environment variable myvar not defined
      
      C:\temp> node test.js
      undefined
      
      1. 现在,运行脚本,但在子进程中设置环境变量,如上所述。请注意,脚本现在可以看到该值。
      C:\temp> cmd.exe /c "set myvar=hello && node test.js"
      hello
      
      1. 确认父进程仍然没有设置变量。
      C:\temp> set myvar
      Environment variable myvar not defined
      
      C:\temp> node test.js
      undefined
      

    【讨论】:

    • 我在 powershell 和 VS code 终端中都试过了,但什么也没发生
    • 有用;我添加了一个完整的 e2e 测试来查看和理解机制。这应该可以帮助您确定您做错了什么。
    猜你喜欢
    • 2018-03-14
    • 2021-03-20
    • 2017-05-31
    • 1970-01-01
    • 2019-08-09
    • 2015-12-27
    • 2014-09-16
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多