【问题标题】:Ruby system call with environment variables in windows在 Windows 中使用环境变量进行 Ruby 系统调用
【发布时间】:2016-12-20 01:29:36
【问题描述】:

在 Windows 机器上执行命令之前,我需要设置一些环境变量,然后在 ruby​​ 脚本中调用它。 在 Linux 上,你可以这样做

cmd = 'echo $FOO'
system({'FOO' => '123'}, cmd) 

OUTPUT is "123"

但在 Windows 上这不起作用,输出是 $FOO

如何在 windows ruby​​ 系统调用上设置环境变量。我有几种 ENV 变体,但出现错误或仍然无法正常工作。

system({$ENV[:VAR1] => "WIN7"}, 'echo $ENV[:VAR1]')

【问题讨论】:

  • 你试图向你的 shell 发出什么命令?
  • 我正在尝试访问环境变量,如示例中所述,我有 windows 使用 $ENV[:var],但访问此环境变量似乎不起作用。

标签: ruby windows powershell environment-variables


【解决方案1】:

Ruby 的 system() 调用主机的默认 shell,因此您需要使用该 shell 的语言

Windows 上的默认 shell 是 cmd.exe,其中环境变量 FOO 必须引用为 %FOO% 才能扩展。

因此,您的代码应该是:

cmd = 'echo %FOO%'
system({'FOO' => '123'}, cmd) 

【讨论】:

  • 嗨,mkelement,使用普通变量,是的,它确实可以正常工作,但我试图做的是使用环境变量(ENV)。那有意义吗?对不起,如果我不是很清楚。
  • @ibaralf:在cmd.exe中,所有变量都是环境变量,所以%FOO%确实引用了环境变量FOO
猜你喜欢
  • 2015-08-20
  • 2018-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-12-15
  • 2015-09-16
  • 2014-04-13
  • 1970-01-01
相关资源
最近更新 更多