我正在尝试构建一个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应用程序的分叉终端)?
答案 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`