Si examino mi shell bash en un OS X (10.6.4) de terminal, como por tipificación echo $0, hay un guión delante de mi concha, así: -bash. ¿Qué significa este guión?
Significa que bashse invoca como un shell de inicio de sesión.
man bash dice:
Un shell de inicio de sesión es aquel cuyo primer carácter del argumento cero es a
-, o uno que comenzó con la--loginopción.Cuando se invoca bash como un shell de inicio de sesión interactivo, o como un shell no interactivo con la
--loginopción, primero lee y ejecuta comandos del archivo/etc/profile, si ese archivo existe. Después de leer ese archivo, busca~/.bash_profile,~/.bash_loginy~/.profile, en ese orden, y lee y ejecuta órdenes desde el primero que existe y es legible. La--noprofileopción se puede usar cuando se inicia el shell para inhibir este comportamiento.Cuando sale un shell de inicio de sesión, bash lee y ejecuta comandos del archivo
~/.bash_logout, si existe.
Encontrará login -pfen su pssalida, que inicia un shell de entrada por defecto.
Intenta correr login -pfy login -pflver la diferencia. man logindescribe la diferencia:
-lIndica al programa ejecutado por inicio de sesión que no se trata de una sesión de inicio de sesión (por convención, una sesión de inicio de sesión se señala al programa con un guión como primer carácter deargv[0]; esta opción desactiva eso) y evita quechdir(2)ingrese al directorio de inicio del usuario . El valor predeterminado es agregar el guión (esta es una sesión de inicio de sesión).
mancitaecho $0: si escriboecho $0en el terminal invocado porctrl + alt + f1, el resultado es-bash; pero si lo escribo en termianl invocado porctrl + alt + t, el resultado esbash(sin guión inicial ). ¿Podrías explicar por qué?--loginargumento, no cambia suargv[0], pero actúa como un shell de inicio de sesión.