在Ruby中的特定shell中执行命令?

时间:2012-07-26 21:55:02

标签: ruby unix

我需要在Ruby文件中运行一些命令,而不是在Bash中运行它们,因为我在Unix上,我想在另一个shell中运行它们,称为“s3sh”。我该如何指定shell?

例如,在我的Ruby代码中,我尝试过:

 system "export RUBYSHELL=s3sh"
 s3 = system "RightAws::S3Interface.new(#{S3ID}, #{S3KEY})"
 system "s3.copy(#{SRCBUCKET}, #{FILE}, #{DESTBUCKET}, #{FILE})"
 system "unset RUBYSHELL"

但是Ruby脚本运行的shell不可能导出环境变量。(参见“Exporting an Environment Variable in Ruby”)

1 个答案:

答案 0 :(得分:2)

s3sh只是AWS :: S3 gem的包装器,所以你过于复杂。你不需要外出;你可以使用Ruby:

require 'right_aws'

s3 = RightAws::S3Interface.new(S3ID, S3KEY)
s3.copy(SRCBUCKET, FILE, DESTBUCKET, FILE)