GNU/Linux >> Tutoriales Linux >  >> Linux

¿La diferencia entre un comando incorporado y uno que no lo es?

¿Hay alguna diferencia intrínseca entre un comando incorporado y otro comando que nominalmente puede hacer lo mismo?

p.ej. ¿Los elementos empotrados reciben un tratamiento "especial"? … ¿hay menos gastos generales ejecutándolos? .. o simplemente están 'incorporados'; como el salpicadero de tu coche?

…y hay una lista definitiva (actual) de estos elementos integrados?

Respuesta aceptada:

Según sus comentarios, parece estar confundido acerca de qué es exactamente un shell es. El núcleo 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 y luego la 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, el shell se llamaba command.com y pocas personas alguna vez intentaron usar uno diferente. En Unix, sin embargo, ha habido durante mucho tiempo varios shells entre los que los usuarios podían elegir.

Se pueden dividir en 3 tipos. Los shells compatibles con Bourne utilizan la sintaxis derivada del shell Bourne original. Los shells C usan la sintaxis del shell C original. Luego están los 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. En primer lugar, suele ser más rápido, porque cargar y ejecutar un programa lleva tiempo. Por supuesto, cuanto más tarde en ejecutarse el comando, menos significativo será 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 comandos como cd debe estar incorporado, porque un programa externo no puede cambiar el directorio actual del shell. Otros comandos, como echo , pueden estar integrados para mejorar la eficiencia, pero no hay una razón intrínseca por la que no puedan ser comandos externos.

Los comandos integrados dependen del shell que esté utilizando. Deberá consultar su documentación para obtener una lista (por ejemplo, bash Los comandos incorporados se enumeran en el Capítulo 4 de su manual). El type comando puede decirle si un comando está integrado (si su shell es compatible con POSIX), porque POSIX requiere que type ser un incorporado. Si which no está integrado en su shell, entonces probablemente no sabrá acerca de los integrados de su shell, sino que solo buscará programas externos.

Relacionado:¿Excluir algunos de los comandos para que no se almacenen en el historial de bash?
Linux
  1. ¿La diferencia entre las cotizaciones "...", '...', $'...' y $"..." en el caparazón?

  2. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  3. ¿Diferencia entre tubería y expansión de comando?

  4. ¿La diferencia entre Nss y Pam?

  5. ¿Diferencia entre '{}' y {} en el comando de búsqueda?

La diferencia entre más, menos y la mayoría de los comandos

¿Cuál es la diferencia entre el comando Cat y Touch?

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Cuál es la diferencia entre el comando apt y apt-get?

¿Cuál es la diferencia entre los comandos kill y killall?

¿Cuál es la diferencia entre una consola, una terminal y un shell?