我在脚本中看到了这一点:
rake -f some_rake_file raketask1 raketask2 --trace CI_REPORTS=/some/directory
CI_REPORTS是一个bash shell变量。它与rake命令在同一行的语句末尾设置。这是如何运作的?我希望看到这个:
CI_REPORTS=/some/directory
rake -f some_rake_file raketask1 raketask2 --trace
(有关CI_REPORTS的更多信息,请参阅http://caldersphere.rubyforge.org/ci_reporter/)
答案 0 :(得分:3)
考虑以下rakefile
:
namespace :bleh do
task :bar do
puts ENV['FOO']
end
end
以下各项将打印“你好”:
rake bleh:bar FOO="hello"
这将FOO
作为变量传递给rake
,并将其视为shell环境变量。调用shell不会将其视为shell变量,但rake
将设置其ENV
结构,就像它一样。 (见rake documentation)。
FOO="hello" rake bleh:bar
shell将FOO
设置为仅用于执行rake
的环境变量。任务完成后,shell中不再设置FOO
。
export FOO="hello"
rake bleh:bar
当前shell将FOO
设置为“hello”,export
使所有当前shell的子任务(子shell)都可以看到。
但是,以下内容不会打印任何内容(空白):
FOO="hello"
rake bleh:bar
在这种情况下,FOO
在此上下文中不会显示rake
(它尚未导出到子任务)。
答案 1 :(得分:1)
Shells只会将其作为参数传递,因此第6个参数将为CI_REPORTS=/some/directory
。
如果要设置环境变量,请更改顺序:
CI_REPORTS=/some/directory rake -f some_rake_file raketask1 raketask2 --trace