簡體   English   中英

如何從紅寶石腳本更改終端中的目錄?

[英]How to change the directory in a terminal from the ruby script?

我正在嘗試構建一個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應用程序的分叉終端)?

據我所知,不,你不能。 您可以(也許)執行此操作的唯一方法是使用ptrace系統調用,但是即使那樣,您仍需要使用支持它的自定義終端。

但是,您可以做的是本着sidescript.rb的精神。 但是,與其在您的主腳本中執行它,不如直接在終端上執行它:

# sidescript.rb

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

$(ruby sidescript.rb)

您可以嘗試這樣使用

`cd path_to_directory && ruby sidescript.rb`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM