/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 已经不存在了,现在 rubygems 在标准库中)并且做了我一直认为我必须在自己的 ~/.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
.
中没有看到此文件的提及
我猜是这个文件
- 由 OS X
安装
- 不会被 irb 按原样读取(尽管其名称和位置具有误导性),但旨在复制到
~/.irbrc
。
有谁知道,或者有什么不同?
我不需要也不想要;我很高兴维护自己的 ~/.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,这是我问题的来源。
在我的 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 已经不存在了,现在 rubygems 在标准库中)并且做了我一直认为我必须在自己的 ~/.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
.
我猜是这个文件
- 由 OS X 安装
- 不会被 irb 按原样读取(尽管其名称和位置具有误导性),但旨在复制到
~/.irbrc
。
有谁知道,或者有什么不同?
我不需要也不想要;我很高兴维护自己的 ~/.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,这是我问题的来源。