Durch Zufall habe ich den Befehl ausgeführt
exec $SHELL -l
in meinem Terminal, und es hat das Aussehen meiner Eingabeaufforderung geändert
Macintosh:~ myname$ exec $SHELL -l
Macintosh-2:~ myname$ cd
d. h. nach Macintosh steht ein "-2"
Macintosh:~ myname$
Macintosh-2: myname$
Ich bin nicht sicher, ob dies für einige Probleme auf meinem System verantwortlich sein könnte.
Ich versuche, Ruby 1.9.3 auf meinem System zu verwenden, das ich mit Rbenv installiert habe.
rbenv version
1.9.3-p327
Wenn ich jedoch versuche, Gems zu installieren, erhalte ich die Fehlermeldung, dass mindestens Ruby 1.9.2 erforderlich ist. Daher gehe ich davon aus, dass die Maschine immer noch die Version von Ruby verwendet, die mit meinem Mac geliefert wird. Ich habe versucht, dies zu beheben, indem ich
gem install bundle
rbenv rehash
bundle install
aber ich erhalte immer wieder die gleiche Fehlermeldung, dass mindestens Ruby 1.9.2 erforderlich ist, daher frage ich mich, ob die Ausführung aus exec $SHELL -l
irgendeinem Grund die Installation von Gems verhindert.
Antwort1
$SHELL
bezieht sich auf Ihre Shell (Befehlsinterpreter). Die meisten Shells erkennen die –l
Option (kleines L) als Hinweis darauf, dass es sich um eine „Login-Shell“ handelt, was in erster Linie bedeutet, dass sie zusätzliche Befehlsdateien liest und verarbeitet (liest z. B. csh
immer .cshrc
, aber wenn es sich um eine „Login-Shell“ handelt, liest sie auch .login
). Sie haben einen neuen Shell-Prozess gestartet und ihm gesagt, dass er sich wie eine „Login-Shell“ verhalten soll.
Einige Shells (ich glaube, bash
das ist eine) verfolgen hierarchische Shell-Prozesse und lassen den Benutzer die Tiefe oder Ebene anzeigen. Dies ist oft in die Shell-Eingabeaufforderung integriert, wie in:
(Eingabeaufforderungszeichenfolge)
$
pwd
/dir1
(Eingabeaufforderungszeichenfolge)$
$SHELL
(prompt2
Zeichenfolge)$
cd ../dir2
# Beachten Sie, dass die Shell-Ebene2
,
(prompt2
Zeichenfolge)$
rm *
# zeigt an, dass Sie sich in einem neuen Shell-Prozess befinden.
(prompt2
Zeichenfolge)$
exit
(Eingabeaufforderungszeichenfolge)$
pwd
# Beachten Sie die Rückkehr zum ursprünglichen Shell-Prozess.
/dir1
Dies sollte nichts mit Ihrem Problem mit RubyGems zu tun haben.