我想从Ruby运行一个Java程序,它是一个独立的应用程序。我在Ruby中使用以下命令:
system("cd /home/webserver/testproject");
system("sh testsh.sh")
我的Java项目在" / home / webserver / testproject"中可用,所以我使用第一个命令更改目录。 sh文件写入一个文件,其中包含运行我的主类的信息,并设置CLASSPATH
环境变量来运行程序。当在Ruby之外执行此操作时,它可以正常工作,但不在Ruby内部。
答案 0 :(得分:2)
system
都会创建一个新的子shell,因此您始终可以从当前目录开始。您需要的是使用Dir.chdir
更改Ruby中的目录:
Dir.chdir("/home/webserver/testproject") do
system "sh testsh.sh"
end
工作目录中的更改将仅应用于do
... end
块内的代码。如果要对整个脚本进行永久更改,可以这样做:
Dir.chdir "/home/webserver/testproject"
system "sh testsh.sh"
答案 1 :(得分:1)
调用system("cd ...
仅在命令范围内更改当前工作目录 。要在正确的目录中运行第二个命令,您需要链接它们:
system("cd /home/webserver/testproject && sh testsh.sh")