1 votos

¿Qué opciones pasa Terminal a bash al iniciarse?

En las preferencias de la Terminal, puedo configurar la Terminal para "Abrir shells con:" -> "Comando (ruta completa):" /opt/local/bin/bash .

¿Qué opciones pasa la terminal al invocar este comando? La terminal parece ejecutar cada shell como un shell de inicio de sesión, así que estoy asumiendo --login ¿se está pasando?

¿Existe alguna documentación de Apple que ofrezca una visión general de lo que se ejecuta exactamente cuando se abre una ventana de terminal?

2voto

Jordan W. Puntos 1083

El comando:

/opt/local/bin/bash

esencialmente instruye a Terminal.app para que cargue un shell bash interactivo (la ruta de tu ejemplo es probablemente la versión macports). Inicialmente, cuando abres Terminal, se inicia una sesión de login shell (en bash). Los shells de inicio de sesión pueden leer archivos como ~/.profile , ~/.bash_profile que configuran las variables de entorno para su sesión, por lo que lo que se ejecuta es principalmente indicativo de lo que se configura dentro de esos archivos.

En general, por defecto al abrir un shell bash desde Terminal se ejecutarían estas cosas:

Procesos

bash
login

Archivos y puertos abiertos

/bin/bash
/usr/lib/dyld
/private/var/db/dyld/dyld_shared_cache_x86_64
/dev/ttys000 

Más información:

Sitio web oficial de Bash

Página de Apple Man: bash(1)

2voto

Greeny Puntos 36

No se pasan argumentos. El terminal ejecuta login -pfq $USER $PROGRAM , que a su vez ejecuta el programa especificado. login señala al programa que es un shell de inicio de sesión anteponiendo un - a argv[0] (el nombre del programa).

Para el shell por defecto, Terminal realmente hace algo diferente. Invoca a login -pfl $USER /bin/bash -c exec -la bash /bin/bash donde el -l la opción de inicio de sesión le dice no para ejecutar el comando como shell de inicio de sesión, mientras que el -l opción de exec le dice que ejecute su argumento como un shell de inicio de sesión (añadiendo el guión). La razón por la que se hace esto es que login también establece el directorio actual en el directorio root del usuario cuando ejecuta un programa como shell de inicio de sesión, mientras que exec no lo hace. Esto permite que la Terminal abra shells en el mismo directorio actual que la pestaña actual, sin login devolviéndola al directorio de origen.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X