¿Qué hace el ejecutivo $SHELL -l?

¿Qué hace el ejecutivo $SHELL -l?

Por accidente, ejecuté el comando

exec $SHELL -l

en mi terminal, y cambió la apariencia de mi mensaje

Macintosh:~ myname$ exec $SHELL -l
Macintosh-2:~ myname$ cd

es decir, hay un "-2" después de Macintosh

Macintosh:~ myname$
Macintosh-2: myname$

No estoy seguro de si esto podría ser responsable de algunos problemas que tengo en mi sistema.

Estoy intentando usar Ruby 1.9.3 en mi sistema, que instalé con Rbenv.

rbenv version
1.9.3-p327

Sin embargo, cuando intento instalar gemas, aparece un mensaje de error que requiere al menos Ruby 1.9.2, por lo que supongo que la máquina todavía usa la versión de Ruby que viene con mi Mac. Intenté arreglar esto por

gem install bundle
rbenv rehash
bundle install

pero sigo recibiendo el mismo mensaje de error acerca de que necesito al menos Ruby 1.9.2, por lo que me pregunto si el efecto de la ejecución exec $SHELL -limpide que las gemas se instalen por algún motivo.

Respuesta1

$SHELLse refiere a su shell (intérprete de comandos). La mayoría de los shells reconocen que la –lopción (L minúscula) significa que es un “shell de inicio de sesión”, lo que significa principalmente que lee y procesa archivos de comandos adicionales (por ejemplo, cshsiempre lee .cshrc, pero si es un “shell de inicio de sesión”, también lee .login). Ha iniciado un nuevo proceso de shell en ejecución y le ha indicado que actúe como un "shell de inicio de sesión".

Algunos shells (creo bashque es uno) realizan un seguimiento de los procesos jerárquicos del shell y permiten al usuario mostrar la profundidad o nivel. Esto suele incorporarse en el símbolo del shell, como en:

 (cadena de aviso)pwd
/dir1
 (cadena de aviso)$SHELL
 (inmediato 2 cadena)cd ../dir2                # Tenga en cuenta que el nivel del shell es2,
 (inmediato 2 cadena)rm *                            # indicando que estás en un nuevo proceso de shell.
 (inmediato 2 cadena)exit
 (cadena de aviso)pwd                                   # Nota para volver al proceso de shell original.
/dir1

Esto no debería tener nada que ver con tu problema con RubyGems.

información relacionada