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 bash
se 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--login
opción.Cuando se invoca bash como un shell de inicio de sesión interactivo, o como un shell no interactivo con la
--login
opción, primero lee y ejecuta comandos del archivo/etc/profile
, si ese archivo existe. Después de leer ese archivo, busca~/.bash_profile
,~/.bash_login
y~/.profile
, en ese orden, y lee y ejecuta órdenes desde el primero que existe y es legible. La--noprofile
opció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 -pf
en su ps
salida, que inicia un shell de entrada por defecto.
Intenta correr login -pf
y login -pfl
ver la diferencia. man login
describe la diferencia:
-l
Indica 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).
man
citaecho $0
: si escriboecho $0
en 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é?--login
argumento, no cambia suargv[0]
, pero actúa como un shell de inicio de sesión.