2016-06-03 15 views
4

Bei der Untersuchung eines Problems mit irb auf meinem Mac (OS X 10.11.5) bemerkte ich /etc/irbrc. Die ersten Zeilen folgen:Wird/etc/irbrc von OS X installiert? Hat irb es gelesen?

# 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 ... 

Es scheint veraltet zu sein (rubygarden.org weg ist, rubygems in diesen Tagen in der Standardbibliothek ist) und tut Dinge, die ich immer dachte, ich hätte in meinem eigenen zu tun ~/.irbrc (Einrichtung Abschluss, Geschichte, etc.).

Es ist vom 31. Januar 2016. Ich habe vielleicht ein Apple-Systemupdate ausgeführt oder nicht aktualisiert oder etwas anderes an diesem Datum aktualisiert; Ich erinnere mich nicht. Ich habe OS X definitiv um eine oder zwei Hauptversionen verbessert.

Ich glaube nicht, dass ich auf diesem Computer andere Rubies installiert habe als den von OS X und einen Ruby 2.3.1, der mit rbenv installiert wurde (in meinem eigenen Account, nicht als root). Das heißt, ich glaube nicht, diese Datei von etwas anderes als O X. kommen konnte

Unix-Shell-Konvention mich führen würde zu erwarten, dass eine Datei namens /etc/irbrc ausgeführt werden würde, wenn jeder Benutzer irb lief, bevor ihr ~/.irbrc wenn sie hatten eins. Das von OS X installierte IRB scheint diese Datei jedoch nicht zu lesen: Ich setze puts 1 an die Spitze und sehe das Ergebnis nicht, wenn ich irb ausführe. (Ich normalerweise rbenv verwenden, aber deaktiviert es während der Untersuchung dieser Datei.) /etc/irbrc scheint nicht zu laufen, ob ich eine ~/.irbrc habe oder nicht. Ich sehe auch keine Erwähnung dieser Datei in /usr/bin/irb oder /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb.

Meine Vermutung ist, dass diese Datei

  • von O X installiert ist
  • wird von irb nicht lesen, da (trotz seines irreführenden Namen und Ort), sondern sollte ~/.irbrc kopiert werden.

Weiß jemand sicher, oder wissen Sie etwas anderes?

Ich brauche oder will es nicht; Ich bin glücklich, meine eigene ~/.irbrc zu pflegen. Ich möchte nur sicher sein, dass es irb nicht beeinflusst, wenn ich es ausführe (insbesondere das IRB in dem von Ruby installierten rbenv-System, das ich normalerweise verwende) und dass zukünftige OS X-Upgrades das irb-Verhalten nicht ändern werden.

+2

Es ist auf meinem Yosemite-System und ich habe noch nie etwas mit Ruby gemacht. –

+0

Ich denke, es gibt hier eine Reihenfolge der Priorität, in der zuerst gelesen wird. Der Eintrag in Ihrem Home-Verzeichnis sollte ihn ersetzen. – tadman

+0

@tadman nein, '/ etc/irbrc' scheint für mich nicht zu laufen, egal ob ich ein' ~/.irbrc' habe oder nicht. Ich werde das in meiner Frage notieren. –

Antwort

4

Pro Mark Setchell und Jared Beck Kommentare,/etc/irbrc ist mit aktuellen (10.13) OS X installiert und war für mindestens ein paar große Releases.

Ich kopierte/etc/irbrc zu ~/.irbrc, ran irb, exited und bekam einen Fehler: undefined method 'nitems' for ["exit"]:Array (NoMethodError). Diese Methode existierte in Ruby 1.8, wurde aber aus Ruby 1.9 entfernt. Normalerweise sehe ich diesen Fehler nicht, daher komme ich zu dem Schluss, dass/etc/irbrc überhaupt nicht ausgeführt wird.

Insgesamt komme ich zum Schluss, dass ich/etc/irbrc ignorieren kann, wenn Probleme mit meiner ~/.irbrc, die der Ursprung meiner Frage war, debuggen.

+1

'/ etc/irbrc' ist in einer Neuinstallation von OS 10.13 enthalten –