Por sus comentarios, parece estar confundido acerca de qué es exactamente un shell . El kernel es responsable de administrar el sistema. Es la parte que realmente carga y ejecuta programas, accede a archivos, asigna memoria, etc. Pero el núcleo no tiene interfaz de usuario; solo puede comunicarse con él utilizando otro programa como intermediario.
Un shell es un programa que imprime un aviso, lee una línea de entrada de usted y luego lo interpreta como uno o más comandos para manipular archivos o ejecutar otros programas. Antes de la invención de la GUI, el shell era la interfaz de usuario principal de un sistema operativo. En MS-DOS, se llamó al shell command.com
y pocas personas intentaron usar uno diferente. En Unix, sin embargo, durante mucho tiempo ha habido múltiples shells entre los que los usuarios pueden elegir.
Se pueden dividir en 3 tipos. Los shells compatibles con Bourne usan la sintaxis derivada del shell Bourne original . Los shells C usan la sintaxis del shell C original . Luego hay shells no tradicionales que inventan su propia sintaxis, o toman prestada una de algún lenguaje de programación, y generalmente son mucho menos populares que los dos primeros tipos.
Un comando incorporado es simplemente un comando que el shell ejecuta por sí mismo, en lugar de interpretarlo como una solicitud para cargar y ejecutar algún otro programa. Esto tiene dos efectos principales. Primero, generalmente es más rápido, porque cargar y ejecutar un programa lleva tiempo. Por supuesto, cuanto más tiempo tarda el comando en ejecutarse, menos significativo es el tiempo de carga en comparación con el tiempo de ejecución general (porque el tiempo de carga es bastante constante).
En segundo lugar, un comando incorporado puede afectar el estado interno del shell. Es por eso que los comandos como cd
deben estar incorporados, porque un programa externo no puede cambiar el directorio actual del shell. Otros comandos, como echo
, pueden estar integrados para la eficiencia, pero no hay ninguna razón intrínseca para que no puedan ser comandos externos.
Los comandos incorporados dependen del shell que esté utilizando. Tendrá que consultar su documentación para obtener una lista (por ejemplo, bash
los comandos integrados se enumeran en el Capítulo 4 de su manual ). El type
comando puede decirle si un comando está incorporado (si su shell es compatible con POSIX), porque POSIX requiere que type
esté incorporado. Si which
no está integrado en su shell, entonces probablemente no sabrá acerca de los complementos de su shell, pero solo buscará programas externos.