2017-05-19 8 views
0

私はリソースをビルドしてパッケージ化する対話型Rubyスクリプトを作成しています。処理の途中で、私は対話型シェルに入れたいですが、具体的な作業ディレクトリには、cdの前に、説明のメッセージ(続行するにはCTRL-D)を押してください。インタラクティブなbash +初期コマンドが問題になっています。 https://stackoverflow.com/a/36152028で与えバッシュにこのような何かを行うための答え、パー初期コマンドでRubyスクリプトでインタラクティブなBashシェルを起動

、私は

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

を試してみたが、bashが対話的に実行されますがは完全に'<(echo "cd ~/src/devops; pwd")'セクションを無視します。

興味深いことに、system '/bin/bash', '--init-fileは引数が与えられていないと文句を言うが、文字通り何もbashを実行するが、初期コマンドはない。

* --init-fileの代わりに(--rcfile)と同じ効果があることに注意してください。

+0

あなただけの 'bashのを起動する前に、Rubyスクリプトの現在の作業ディレクトリを変更することができます';作業ディレクトリは継承されます。 – chepner

答えて

1

bashが正しい作業ディレクトリを継承するように、まずRubyスクリプトの作業ディレクトリを変更します。

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

Aha!それは私が必要としているもののためにうまくいく。ありがとう@chepner! – Excalibur

関連する問題