Estaba buscando la diferencia entre adduser
y useradd
, y una explicación es que useradd
es un comando mientras que adduser
es un script perl. Entiendo lo que es un script perl, pero lo que no entiendo es qué command
es exactamente eso.
Siempre he pensado que los comandos como ls
, ln
, cd
etc, son todos los programas simples escritas en cualquier lenguaje que simplemente hacer una cosa. ¿Cuál es la diferencia entre estos "programas simples" y un script perl?
Por supuesto, sé que un script (perl) no se compila sino que se interpreta en tiempo de ejecución, pero supongo que esa no es la única diferencia.
linux
command-line
bash
perl
kramer65
fuente
fuente
Respuestas:
En términos simples, un comando es una instrucción (o un conjunto de instrucciones) que debe ejecutar una computadora.
Comandos independientes
Las utilidades fundamentales de Unix tales como
ls
,ln
etc. están escritas (generalmente) en C y compiladas para ser programas ejecutables independientes que no requieren la ejecución de un intérprete; Por lo general, requieren la instalación de ciertos archivos de biblioteca en el sistema, pero esa es una respuesta para otra pregunta.Guiones
Un script es una colección de comandos y, de hecho, los scripts en sí mismos se consideran un comando.
Un script de perl es una secuencia de sentencias Perl y requiere un
perl
(stand-alone y compilado) ejecutable del programa para interpretar las declaraciones de Perl.A veces, los guiones interpretativos grandes y complejos (en lenguajes como Perl, Python y Ruby) también se denominan programas interpretados, mientras que el término guión está reservado para guiones más cortos y simples.
Un script de shell es una secuencia de otros comandos (cualquier tipo de comando) y requiere un shell de Unix como Bash para interpretar el script. Desde la página de manual de Bash:
Shell incorporado
Los shells generalmente tienen comandos integrados que no son ni programas independientes ni scripts. En cambio, son parte del shell y se ejecutan directamente por el shell.
cd
es un ejemplo de dicho comando incorporado.Algunas veces hay comandos que existen como funciones integradas de shell y como comandos independientes al mismo tiempo, por ejemplo, el
echo
comando.echo
por sí solo ejecuta el shell incorporado, mientras que el comando independiente se puede ejecutar proporcionando su ruta completa.Ejecute la versión integrada de echo:
Ejecute el
echo
programa independiente :Nota: Los detalles anteriores se refieren a un entorno Unix, pero los mismos principios se aplican a un entorno Windows.
fuente
.bat
archivos en muchos, muchos años).Un comando integrado es parte del shell. Un programa es ejecutado por el shell.
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands
fuente
useradd
no es un shell incorporado. El sitio web acaba de decir "comando", no "comando incorporado". ¿Cómo es relevante esta explicación para esta pregunta?Comando solo significa una manera de decirle a una aplicación o sistema que haga algo.
Una aplicación generalmente aceptará muchos comandos diferentes, ya sea desde la GUI, desde
stdin
, pero son posibles otros métodos, por ejemplo, un socket UNIX o canalización con nombre, algún tipo de API web, una conexión RPC o algún otro protocolo personalizado.Una aplicación que solo hace una cosa y luego sale, normalmente sin una GUI, también puede llamarse comando, porque en realidad solo puede "dar" a esta aplicación un "comando" significativo. Así es como funcionan los programas pequeños
ls
y tales y por qué se llaman comandos.Pero no llamaría a Photoshop un comando, pero ciertamente emitiría comandos dentro de él a través de la GUI.
Sin embargo, el término puede significar cosas diferentes para diferentes personas. En su ejemplo, el comando se usa para describir un ejecutable que se ejecuta directamente, en comparación con un archivo que requiere un intérprete de script para funcionar. La distinción puede ser importante porque cuando está ejecutando un script Perl,
/usr/bin/perl
es el binario que realmente se está ejecutando (así que si desea eliminar un script Perl de ejecución prolongada, eso es lo que debe buscarps
). Sin embargo, la mayoría de los shells tienen comandos "incorporados" que son comandos del propio shell y no hacen que se ejecute un ejecutable externo. Por ejemplo,cd
se manejabash
solo y no llama/sbin/cd
o similar.fuente