2017-05-19 71 views
0

我正在開發一個交互式Ruby腳本,它構建和打包資源。在這個過程的中間,我想放入一個交互式shell,但是將cd'放入一個特定的工作目錄,以及一個解釋性消息(CTRL-D繼續)。給定初始命令的交互式bash +是有問題的。在Ruby腳本中使用初始命令啓動交互式Bash shell

每答案做這樣的事情在Bash中,在給定的https://stackoverflow.com/a/36152028,我已經試過

system '/bin/bash', '--init-file', '<(echo "cd ~/src/devops; pwd")'

然而,bash的交互方式運行,但完全忽略了'<(echo "cd ~/src/devops; pwd")'部分

有趣的是system '/bin/bash', '--init-file抱怨如果沒有參數給出,但字面上任何東西都運行bash,但沒有初始命令。

*注意(--rcfile代替--init-file)具有相同的效果。

+0

你可以只啓動前更改Ruby腳本的當前工作目錄'慶典';工作目錄被繼承。 – chepner

回答

1

首先更改Ruby腳本的工作目錄,以便bash繼承正確的工作目錄。

curr_dir = Dir.pwd 
Dir.chdir("#{Dir.home}/src/devops") 
system "/bin/bash" 
Dir.chdir(curr_dir) # Restore the original working directory if desired 

哦,這可能是更好的(你可能已經猜到我熟悉的怎麼一點與紅寶石):

system("/bin/bash", :chdir=>"#{Dir.home}/src/devops") 
+0

啊哈!這對我所需要的很好。謝謝@chepner! – Excalibur