我正在开发一个交互式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)具有相同的效果。
答案 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")