2017-05-19 64 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