chruby 未根据 .ruby 中的值更改为 ruby 的正确版本 - 新终端选项卡上的版本

chruby not changing to the proper version of ruby according to the value in .ruby-version on new terminal tab

我正在使用 source /usr/local/opt/chruby/share/chruby/auto.sh 自动将 ruby 更改为 .ruby-version 中的版本,但不幸的是这只适用于 cd.

当我在 mac 终端中打开一个新选项卡时,它会打开到我在上一个选项卡中所在的同一目录,但自动更改不起作用。我对此的解决方案是 cd ..cd 返回,这会触发更改。显然,这很烦人。

我尝试在新标签中手动调用函数chruby_auto,但是没有效果。

有人可以提供在这种情况下如何更新我的 ruby 版本的解决方案吗?我更喜欢自动解决方案,但会满足于调用命令。

其实没关系,我将其追溯到我的 .bashrc 中这些调用顺序的问题

不正确:

source /usr/local/opt/chruby/share/chruby/chruby.sh
source /usr/local/opt/chruby/share/chruby/auto.sh
chruby ruby-2.3.0 

我发现你必须在默认线路之后调用自动线路。请注意,默认行也必须位于 chruby.sh 行之后。

正确:

source /usr/local/opt/chruby/share/chruby/chruby.sh
chruby ruby-2.3.0 # default order important, if comes after auto.sh, will undo the auto change
source /usr/local/opt/chruby/share/chruby/auto.sh

所以我想为了后代留下这个答案

除非我误解了你的问题,否则听起来你想要一个 ~/.ruby-version 文件(不同于项目中的 .ruby-version 文件),以便你可以确定 [= 的版本25=] 你想在打开一个新终端时默认使用 window (这个值将被项目 .ruby-version 文件覆盖,如果它存在的话)。例如,在我的 ~/.bashrc 中,我有:

if [[ -e /usr/local/share/chruby ]]; then
  # Load chruby
  source /usr/local/share/chruby/chruby.sh
  # Allow auto-switching of Ruby version when
  # directory has a .ruby-version file
  source /usr/local/share/chruby/auto.sh
fi

我的 ~/.ruby-version 只包含 2.3.1,不需要在 ~/.bashrc 中显式调用 chruby。有关详细信息,请参阅 Default Ruby section of chruby's README file.