Hay diferentes tipos de conchas. El shell de ejecución del comando SSH es un shell no interactivo, mientras que su shell normal es un shell de inicio de sesión o un shell interactivo. La descripción sigue, de man bash:
Un shell de inicio de sesión es aquel cuyo primer carácter de argumento
cero es un -, o uno comenzó con la opción --login.
Un shell interactivo es uno iniciado sin opción
argumentos y sin la opción -c cuya entrada estándar
y el error están conectados a los terminales (según lo determinado
por isatty (3)), o uno comenzó con la opción -i. PS1 es
set y $ - incluye i si bash es interactivo, permitiendo un
script de shell o un archivo de inicio para probar este estado.
Los siguientes párrafos describen cómo bash ejecuta su
archivos de inicio Si alguno de los archivos existe pero no puede ser
leer, bash informa un error. Tildes se expanden en el archivo
nombres como se describe a continuación en Tilde Expansion en el
Sección de expansión.
Cuando se invoca bash como un shell de inicio de sesión interactivo, o como
un shell no interactivo con la opción --login, 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 comandos del primero
eso existe y es legible. La opción --noprofile puede
ser utilizado cuando se inicia el shell para inhibir este comportamiento
ior.
Cuando sale un shell de inicio de sesión, bash lee y ejecuta comandos
del archivo ~ / .bash_logout, si existe.
Cuando un shell interactivo que no es un shell de inicio de sesión es
iniciado, bash lee y ejecuta comandos desde ~ / .bashrc,
si ese archivo existe Esto puede inhibirse mediante el uso de
- opción opcional. La opción de archivo --rcfile forzará bash
leer y ejecutar comandos desde un archivo en lugar de
~ / .bashrc.
Cuando bash se inicia de forma no interactiva, para ejecutar un shell
script, por ejemplo, busca la variable BASH_ENV en
el medio ambiente, expande su valor si aparece allí,
y usa el valor expandido como el nombre de un archivo para leer
y ejecutar Bash se comporta como si el siguiente comando
fueron ejecutados:
si [-n "$ BASH_ENV"]; luego . "$ BASH_ENV"; fi
pero el valor de la variable PATH no se usa para buscar
para el nombre del archivo.