Was macht exec $SHELL -l?

Was macht exec $SHELL -l?

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 -lirgendeinem Grund die Installation von Gems verhindert.

Antwort1

$SHELLbezieht sich auf Ihre Shell (Befehlsinterpreter). Die meisten Shells erkennen die –lOption (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. cshimmer .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, bashdas 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
 (prompt 2 Zeichenfolge)cd ../dir2                # Beachten Sie, dass die Shell-Ebene2,
 (prompt 2 Zeichenfolge)rm *                            # zeigt an, dass Sie sich in einem neuen Shell-Prozess befinden.
 (prompt 2 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.

verwandte Informationen