如何从红宝石脚本更改终端中的目录?

时间:2019-07-05 11:58:52

标签: ruby linux command-line-interface

我正在尝试构建一个CLI应用程序,该应用程序将git存储库克隆,创建分支并将CD放入新克隆的存储库中。 我能够实现这一点,除了必须将CD刻录到新克隆的存储库的那部分。 通过所说的ruby脚本在运行我的ruby脚本的终端中更改目录的最佳方法是什么。

Dir.chdir "#{z}"

仅更改脚本内的目录,而不更改终端上的目录。

我尝试编写一个执行CD的辅助ruby脚本,并在我的第一个ruby脚本中以反引号调用它,但失败了。

为了进行测试,我尝试制作辅助的ruby脚本,将其CD放到上一个目录。

sidescript.rb

puts "cd .."

在我的原稿中,

`ruby ./sidescript.rb`

我知道ruby脚本执行会分叉当前终端并开始在其上运行,这就是为什么诸如“ system cd [my_path]”或exec之类的命令不起作用的原因。

是否可以通过某种方式在当前终端上编写命令来更改目录(而不是ruby应用程序的分叉终端)?

2 个答案:

答案 0 :(得分:1)

据我所知,不,你不能。您可以(也许)执行此操作的唯一方法是使用ptrace系统调用,但是即使那样,您仍需要使用支持该功能的自定义终端。

但是,您可以做的是本着sidescript.rb的精神。但是,与其在主脚本中执行它,不如直接在终端上执行它:

# sidescript.rb

puts 'cd my/new/path'
# In your terminal

$(ruby sidescript.rb)

答案 1 :(得分:1)

您可以尝试这样使用

`cd path_to_directory && ruby sidescript.rb`