【问题标题】:Wrong ruby executable path in Tmux sessionTmux 会话中错误的 ruby​​ 可执行文件路径
【发布时间】:2013-05-23 07:00:07
【问题描述】:

我使用rvm 安装了ruby 2.0。我是tmux 的新手。

我在 .tmux.conf 中使用 zsh 和这个配置

set-option -g default-shell /bin/zsh 
set-option -g default-command "/bin/zsh -i"

我还在.zshrc中加载了rvm路径

source /Users/mgpyone/.rvm/scripts/rvm

现在,这些是我在tmux 会话中尝试时的配置。

which ruby/Users/mgpyone/.rvm/rubies/ruby-2.0.0-p0/bin/ruby

where ruby 返回为

/Users/mgpyone/.rvm/rubies/ruby-2.0.0-p0/bin/ruby 
/Users/mgpyone/.rvm/bin/ruby 
/Users/mgpyone/.rvm/bin/ruby

但为什么gem env 显示我的Ruby executable 路径设置为系统路径而不是rvm

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.3
  - RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x86_64-darwin12.3.0]
  - INSTALLATION DIRECTORY: /Users/mgpyone/.rvm/gems/ruby-2.0.0-p0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/mgpyone/.rvm/gems/ruby-2.0.0-p0/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /Users/mgpyone/.rvm/gems/ruby-2.0.0-p0
     - /Users/mgpyone/.rvm/gems/ruby-2.0.0-p0@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - :benchmark => false
     - :sources => ["https://rubygems.org"]
  - REMOTE SOURCES:
     - https://rubygems.org

而且我不能运行像rake 这样的东西,因为我认为它可以使用 System Ruby 执行。

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby app.rb -s puma
app.rb:1:in `require': no such file to load -- sinatra (LoadError)
        from app.rb:1
        rake aborted!
        Command failed with status (1): [/System/Library/Frameworks/Ruby.framework/...]
        /Users/mgpyone/work/rb/fileserver/Rakefile:9
        (See full trace by running task with --trace)

我该如何解决这个问题?

【问题讨论】:

  • 只要检查gem命令是使用系统gem还是rvm gem。另外,这是否仅在您使用 tmux 时发生?
  • 如何检查gem 命令使用的是system gem 还是rvm gem?是的,只有当我在tmux 会话中时才会发生这种情况。非常感谢。
  • 就在which gem。也许尝试将 tmux 默认命令更改为 "/bin/zsh -l" - 你需要一个登录 shell 来获取 zshrc。
  • 当我在 tmux 会话中运行 which gem 时,它会显示 /usr/bin/gem 。当我在 zsh shell 之外运行相同的东西时,它会这样写 pastebin.com/fQLmA5Xm 。我已经改成/bin/zsh -l
  • 如果你在你的 tmux 会话中明确地source ~/.zshrc 会起作用吗?

标签: ruby macos rvm tmux


【解决方案1】:

很可能你在启动 tmux 时设置了 $GEM_HOME 或 $GEM_PATH。由于 tmux 继承了这些环境变量,它下包含的每个 shell 都将受到这些设置的影响,无论 rvm 设置如何。

检查tmux showenv -g GEM_HOME(或 GEM_PATH)

【讨论】:

  • 所以——这绝对是我面临的问题。但似乎 RVM 自动为我设置了 $GEM_HOME:
猜你喜欢
  • 2014-11-24
  • 1970-01-01
  • 2014-03-05
  • 2014-10-27
  • 2015-07-03
  • 2022-10-21
相关资源
最近更新 更多