/etc/irbrc 是由 OS X 安装的吗? irb 读了吗?

Is /etc/irbrc installed by OS X? Does irb read it?

在我的 Mac (OS X 10.11.5) 上调查 irb 问题时,我注意到 /etc/irbrc。前几行如下:

# Some default enhancements/settings for IRB, based on
# http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks

unless defined? ETC_IRBRC_LOADED

  # Require RubyGems by default.
  require 'rubygems'

  # Activate auto-completion.
  require 'irb/completion'

# continued ...

它似乎已经过时了(rubygarden.org 已经不存在了,现在 ruby​​gems 在标准库中)并且做了我一直认为我必须在自己的 ~/.irbrc 中做的事情(设置完成、历史记录等)。

它的日期是 2016 年 1 月 31 日。我可能会也可能不会 运行 Apple 系统更新或在该日期升级其他东西;我不记得了。从那时起,我肯定已经将 OS X 升级了一两个主要版本。

除了 OS X 和 Ruby 2.3.1 安装了 rbenv(在我自己的帐户中,不是以 root 身份)之外,我认为我没有在这台计算机上安装任何 Rubies ).也就是说,我不认为这个文件可能来自 OS X.

以外的任何东西

Unix shell 约定会让我期望一个名为 /etc/irbrc 的文件会在任何用户 运行 irb 之前执行,如果他们有一个 ~/.irbrc .但是,OS X 安装的 irb 似乎没有读取这个文件:我把 puts 1 放在最上面,当我 运行 irb 时没有看到结果。 (我通常使用 rbenv,但在调查此文件时禁用了它。)/etc/irbrc 不会出现在 运行 中,无论我是否有 ~/.irbrc。另外,我在 /usr/bin/irb/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.

中没有看到此文件的提及

我猜是这个文件

有谁知道,或者有什么不同?

我不需要也不想要;我很高兴维护自己的 ~/.irbrc。我只是想确保当我 运行 它时它不会影响 irb(特别是我通常使用的 rbenv-installed Ruby 中的 irb),以及未来 OS X 升级不会改变 irb 行为。

根据 Mark Setchell 和 Jared Beck 的评论,/etc/irbrc 与当前 (10.13) OS X 一起安装,并且至少已用于几个主要版本。

我复制了/etc/irbrc到~/.irbrc,运行irb,退出后报错:undefined method 'nitems' for ["exit"]:Array (NoMethodError)。此方法在 Ruby 1.8 中存在,但已从 Ruby 1.9 中删除。我通常不会看到这个错误,所以我得出结论 /etc/irbrc 根本没有执行。

总的来说,我得出结论,在调试 ~/.irbrc 问题时我可以忽略 /etc/irbrc,这是我问题的来源。