我需要在 Ruby 脚本中以编程方式设置 ruby 版本 -> 执行捆绑程序 -> 和其他命令 [注意:不希望使用 shell 脚本执行此操作,它必须通过 ruby 本身]。
由于默认情况下执行 ruby 脚本/irb 使用“ sh ”,并且 RVM 使用“ bash/zsh ”,我设法使用 rvm & bash 使用以下命令设置 ruby 版本
%x[bash -lc "rvm use #{ruby_ver}" 2>&1]
:
问题:在此之后,如果我运行任何系统命令(如 bundle install),它不会在我设置 ruby 版本的同一个 bash shell 中执行,而是作为一个新 shell(再次考虑'sh'),因此执行环境与需要的不同。
即使在使用 运行更多命令时%x[bash -lc #{command}]
,它也会被视为不同的 shell。
有没有办法:在整个 ruby 脚本执行期间将 shell 更改为 bash 或保留触发 RVM 的 shell 或任何更好的方法来处理这种情况
感谢任何帮助。