Ruby中的shell cd命令

时间:2016-11-29 10:02:59

标签: ruby shell cd

我尝试使用ruby执行shell命令,但我无法用空格将目录更改为PATH。

variable = %x[cd #{ENV["HOME"]}/Virtual\\ VMs/]

这不起作用。 谢谢

2 个答案:

答案 0 :(得分:1)

绝对安全:

path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}']

请注意,cd的输出为空,所以为了确保它的工作原理,可能需要做类似的事情:

path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}' && ls -la]
#⇒ "total 32\ndrwxr-xr-x  ....."

答案 1 :(得分:1)

应该做什么?您尝试将chdir放入目录中,但之后不要执行任何操作。在任何情况下,您的variable都将为空。除了它没有意义之外,你不能以这种方式可靠地执行cd,因为它不是可执行文件。如果您只执行%x[cd],就可以看到这一点。您将获得Errno::ENOENT例外。

也许您应该首先在更广泛的背景下描述您希望使用代码实现的目标。您想在哪里更改工作目录?在Ruby进程中 - 在这种情况下你必须使用Dir.chdir - 或者在子进程中 - 在这种情况下你必须在cd之后执行一些命令。