ruby - 通过 ssh 运行命令时尊重 rbenv
问题描述
我有一个无头 Ubuntu 18.04 VM,我在 rbenv 之上安装 Rails 应用程序。
我希望能够自动化一些管理操作,以便我可以在本地运行它们并让我的脚本通过 ssh 执行命令。但是,当我这样做时,我得到的是系统红宝石而不是 rbenv 红宝石。如果我直接 ssh 到盒子,那么我会得到正确的 rbenv ruby。
例子:
ubuntu:~$ cat show-ruby.sh
which ruby
ruby --version
ubuntu:~$ bash show-ruby.sh
/home/ubuntu/.rbenv/shims/ruby
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
laptop:~$ ssh ubuntu 'bash show-ruby.sh'
/usr/bin/ruby
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
rbenv 在我的.bashrc
文件中初始化:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
所以我尝试添加source ~/.bashrc
到我的show-ruby.sh
测试脚本的顶部,但它没有任何区别。有什么想法可以强制我的远程执行脚本尊重我的 rbenv 安装的 ruby?
解决方案
只需添加一个带有所需 ruby 版本的 .ruby-version 文件,rbenv 将自动设置 ruby 版本
[current] > cat .ruby-version
2.4.6
[current] > rbenv version
2.4.6 (set by .ruby-version)
推荐阅读
- google-chrome - chrome.tabCapture.captureOffscreenTab 消失/替代
- mysql - 如何在 MySQL 8 中设置 OUTFILE 的权限
- javascript - 如何按属性过滤数组?
- c - 为什么这段代码会输出非法指令4,为什么-mmacosx-version-min没有解决?
- node-mysql2 - 如何在 node-mysql2 中转义表名?
- swift - 向上滚动 UITable 后的 Swift 5 调用函数
- python - Django在保持顺序的同时合并QuerySet
- powershell - 检查电子邮件地址
- http-post - 如何将文件内容附加到 Logic App Http Post?
- reactjs - 加载下一页时如何从上一页获取输入字段的数据?