使用初始命令在Ruby脚本中启动交互式Bash shell

时间:2017-05-19 17:31:42

标签: ruby bash

我正在开发一个交互式Ruby脚本,它可以构建和打包资源。在这个过程的中间,我想进入一个交互式shell,但是在concatMap之前进入一个特定的工作目录,以及一条解释性消息(CTRL) -D继续)。交互式bash +给出的初始命令是有问题的。

根据https://stackoverflow.com/a/36152028给出的在Bash中做这样的事情的答案,我试过了

cd

但是,bash以交互方式运行,但完全忽略了system '/bin/bash', '--init-file', '<(echo "cd ~/src/devops; pwd")'部分

有趣的是'<(echo "cd ~/src/devops; pwd")'抱怨如果没有给出任何参数,但字面上任何东西都运行bash,但没有初始命令。

*请注意(--rcfile而不是--init-file)具有相同的效果。

1 个答案:

答案 0 :(得分: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

哦,这可能要好得多(你可能会猜到我对Ruby的熟悉程度):

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