如何从Ruby脚本中更改终端中的目录



我正在尝试构建一个CLI应用程序,该应用程序将git存储库夹住,创建分支和CD中的CD中。我能够实现它,除了我必须将CD CD到新克隆的存储库的部分。通过上述Ruby脚本,更改正在运行Ruby脚本的终端中目录的最佳方法是什么。

Dir.chdir "#{z}"

仅更改脚本内部的目录,但不在终端中更改。

我尝试编写一个辅助Ruby脚本,该脚本执行CD并在我的第一个Ruby脚本中以Backticks的形式称为失败。

为了进行测试,我试图制作辅助Ruby脚本,将其cds cds cd到先前的目录。

sidescript.rb

puts "cd .."

,在我的主题中,我有,

`ruby ./sidescript.rb`

我知道Ruby脚本执行将当前终端叉并开始使用,这就是为什么诸如" System CD [My_path]"或Exec之类的命令不起作用的原因。

是否有可能在当前终端上编写命令来更改目录(而不是Ruby应用程序的分叉终端(?

据我所知,不,你不能。您(也许(这样做的唯一方法是使用ptrace系统调用,但是即使那样,您仍需要使用可以支持它的自定义终端。

但是,您可以做的是靠您的sidescript.rb的精神。但是,您必须直接从终端执行它,而不是在主脚本中执行它:

# sidescript.rb
puts 'cd my/new/path'
# In your terminal
$(ruby sidescript.rb)

您可以尝试这样的尝试

`cd path_to_directory && ruby sidescript.rb`