Estaba buscando la diferencia entre adduser
yuseradd
yuna explicaciónes useradd
un comando mientras que adduser
es un script en Perl. Entiendo qué es un script en Perl, pero lo que no entiendo es qué command
es exactamente entonces.
Siempre pensé que comandos como ls
, ln
etc. cd
son programas simples escritos en cualquier idioma que simplemente hacen una cosa. ¿Cuál es la diferencia entre estos "programas simples" y un script en 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.
Respuesta1
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 como ls
, ln
, etc. están (generalmente) escritas en C y compiladas para ser ejecutables independientes.programasque no requieren la ejecución de un intérprete; normalmente requieren ciertosbibliotecaarchivos que se instalarán 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.
Asecuencia de comandos Perles una secuencia de declaraciones de Perl y requiere un perl
ejecutable (independiente y compilado)programapara interpretar las declaraciones de Perl.
A veces, los scripts interpretativos grandes y complejos (en lenguajes como Perl, Python y Ruby) también se denominanprogramas interpretadosmientras que el términoguionestá reservado para guiones más cortos y simples.
Ascript de shelles una secuencia de otros comandos (cualquier tipo de comando) y requiere un shell Unix como Bash para interpretar el script. Desde la página de manual de Bash:
Bash es un intérprete de lenguaje de comandos compatible con sh que ejecuta comandos leídos desde la entrada estándar o desde un archivo.
Incorporaciones de carcasa
Las conchas suelen tenerincorporadocomandos que no son ni programas independientes ni scripts. En cambio, son parte del propio shell y se ejecutan directamente desde el shell. cd
es un ejemplo de un comando integrado de este tipo.
Algunas veces hay comandos que existen como comandos integrados en el shell y como comandos independientes al mismo tiempo, por ejemplo, el echo
comando.
$ type -a echo
echo is a shell builtin
echo is /usr/bin/echo
echo
por sí solo ejecuta el shell integrado, mientras que el comando independiente se puede ejecutar proporcionando su ruta completa.
Ejecute la versión incorporada de echo:
$ echo --version
--version
Ejecute el programa independiente echo
:
$ /usr/bin/echo --version
echo (GNU coreutils) 8.23
Packaged by Cygwin (8.23-4)
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Nota: Los detalles anteriores se refieren a un entorno Unix, pero los mismos principios se aplican a un entorno Windows.
Respuesta2
Un comando integrado es parte del shell. Un programa es ejecutado por el shell.
Los comandos integrados están contenidos dentro del propio shell. Cuando el nombre de un comando incorporado se utiliza como la primera palabra de un comando simple (consulteComandos simples), el shell ejecuta el comando directamente, sin invocar otro programa. Los comandos integrados son necesarios para implementar funciones imposibles o inconvenientes de obtener con utilidades independientes.
http://www.gnu.org/software/bash/manual/bashref.html#Shell-Builtin-Commands
Respuesta3
Dominiosimplemente significa una forma de decirle a una aplicación o sistema que haga algo.
Una aplicación normalmente aceptará muchos comandos diferentes, ya sea desde la GUI o desde stdin
, pero son posibles otros métodos, por ejemplo, un socket UNIX o una canalización con nombre, algún tipo de API web, una conexión RPC o algún otro protocolo personalizado.
Una aplicación que hace sólo una cosa y luego sale, normalmente sin una GUI, también puede denominarse comando, porque en realidad sólo se puede "dar" a esta aplicación un "comando" significativo. Así es como ls
funcionan los programas pequeños como estos y por eso se llaman comandos.
Pero no llamarías a Photoshop un comando, pero ciertamente emitirías comandos dentro de él a través de la GUI.
Sin embargo, el término puede significar cosas diferentes para diferentes personas. En tu ejemplo,dominiose utiliza para describir un ejecutable que se ejecuta directamente, frente a un archivo que requiere un intérprete de script para funcionar. La distinción puede ser importante porque cuando ejecuta un script Perl, /usr/bin/perl
es el binario el que realmente se está ejecutando (por lo que si desea eliminar un script Perl de ejecución prolongada, eso es lo que debe buscar en ps
). Sin embargo, la mayoría de los shells tienen comandos "integrados" que son comandos para el propio shell y no provocan la ejecución de un ejecutable externo. Por ejemplo, cd
se maneja bash
solo y no llama /sbin/cd
ni nada parecido.