我在 Ubuntu 上安装了 ruby 以便在系统范围内使用。
.irbrc_history
文件是在系统目录而不是用户的主目录中创建的。当文件由其他人拥有时,这会导致访问错误。除了一堆我认为不相关的错误之外,这是错误:
irb
/usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/irb/ext/save-history.rb:75:in `initialize': Permission denied @ rb_sysopen - /usr/local/rvm/rubies/ruby-2.4.1/.irbrc_history (Errno::EACCES)
删除历史文件即可解决该错误。
我尝试将环境变量和历史初始化代码添加到我认为是系统
.irbrc
的文件中,但没有成功。
影响此历史文件的初始化文件的执行顺序是什么?如何更改历史文件的位置?
创建或编辑 ~/.irbrc 文件以包含:
require 'irb/ext/save-history'
IRB.conf[:SAVE_HISTORY] = 200
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-history"
你碰巧使用RVM吗?
rvm 1.29.3(当前稳定)有一个错误,IRB 历史记录保存在
RUBY_HOME
而不是 HOME
。
https://github.com/rvm/rvm/issues/4158
修复方法如下:
rvm get head
rvm reinstall 2.4.1
在主目录中创建文件:
touch ~/.irbrc_history
。
或者将其从系统路径复制到您的主目录:
cp /path/of/system/.irbrc_history ~/.irbrc_history
请注意,您应该将
/path/of/system/
更改为系统上的任何内容。
一旦文件位于您的主目录中(由
~
给出),那么当您的用户运行时它将运行irb