¿Dónde están instalados los comandos 'fg', 'bg' y 'jobs'? [duplicar]

16
    

Esta pregunta ya tiene una respuesta aquí:

    
  •              ¿Por qué no ' ¿Qué 'comando funciona para' cd '? ¡No puedo encontrar el ejecutable para 'cd' tampoco!                                      4 respuestas                          
  •     

fg , bg y jobs se utilizan para la gestión de trabajos. Y por alguna razón (tal vez soy solo yo), no puedo encontrar dónde están sus binarios ni sus páginas de manual ( whereis no imprime ninguna información). which no da salida. Los comandos en sí funcionan bien, sin embargo.

Ejecuté comandos como find /bin bg , pero sin hits. También ejecuté find / bg para lanzar una red amplia.

    
pregunta Guildenstern 24.04.2015 - 17:39

5 respuestas

32

No obtiene ningún archivo en contra de esos comandos porque son shell ( bash ) integrados, no archivos ejecutables separados (por ejemplo, archivos binarios, scripts). En realidad, los integradores de shell se compilan en el ejecutable de shell; si lo desea, puede verificar el código fuente para estar seguro de ello. Como which o whereis solo busca archivos ejecutables externos, no obtendrá ningún resultado para los complementos.

Para encontrar si un comando es un archivo incorporado, un alias, una función o un archivo externo, la mejor manera es usar% built_Code%:

$ type fg
fg is a shell builtin

$ type bg
bg is a shell builtin

$ type jobs
jobs is a shell builtin

También tenga en cuenta que su comando type no es sintácticamente correcto. La sintaxis correcta (la más simple) es find .

También tenga en cuenta que pocos comandos se implementan como un shell incorporado y un ejecutable independiente independiente. Para tales comandos, siempre recuerde que el comando incorporado tendrá prioridad sobre el externo. Entonces, cuando ejecuta find /where/to/search -name 'name_to_search' , se ejecuta el echo something incorporado. Si desea ejecutar el ejecutable binario echo , debe llamarlo de otra manera. Una forma es usar la ruta completa al ejecutable: echo .

Para mostrar todas las versiones disponibles de un comando, ejecute /bin/echo something con la opción type :

$ type -a echo
echo is a shell builtin
echo is /bin/echo

Para obtener documentación para los built-in de shell, puede verificar la página -a de man o usar el comando bash (que es un comando integrado):

help jobs

También como @terdon señaló debes usar help en lugar de type .

    
respondido por el heemayl 24.04.2015 - 17:48
6

Son incorporados en el intérprete de comandos: puede obtener información básica de uso al escribir help fg o help jobs en el intérprete de comandos bash, o información más detallada de la página de manual de bash.

    
respondido por el steeldriver 24.04.2015 - 17:45
4

Añadiendo a la respuesta de heemayl, vale la pena señalar que fg , bg y jobs tienen que estar integrados en el shell, porque manipulan estructuras de datos en la memoria del shell y / o el estado del kernel asociado con el proceso del shell. No sería posible escribir un comando externo que haga lo que fg hace.

Otros comandos que deben incorporarse incluyen cd , %código%, %código%, %código%, %código%, %código%, %código%, %código%, eval (alias exec ), %código%, %código%, %código%, %código%, y exit . Su shell puede tener una lista más larga, dependiendo de la cantidad de funcionalidad extendida que implemente. POSIX tiene una lista diferente, pero superpuesta, de "utilidades incorporadas especiales" - - No estoy seguro de por qué cosas como export y history cuentan como comandos en lugar de palabras clave de estructura de control, o por qué POSIX no considera cosas como read must-build-in cuando no pueden ser implementados de otra manera. (Podrías escribir un programa llamado set que llamara source , pero solo cambiaría la configuración de en sí mismo, no para procesos posteriores creados por el shell, por lo que no cumpliría con su especificación).

    
respondido por el zwol 24.04.2015 - 21:10
2

Estos son comandos integrados de shell. No hay ningún binario para ellos, ya que son parte de Bash (o cualquier shell que estés utilizando).

Están documentados, por ejemplo, en la página de manual de Bash (consulte la sección "SHELL BUILTIN COMMANDS")

    
respondido por el Florian Diesch 24.04.2015 - 17:46
2

fg , bg y jobs no son utilidades separadas, pero son parte de bash (comandos integrados de shell).

puedes encontrar más sobre ellos en el manual de bash usando el comando

man bash
    
respondido por el Registered User 24.04.2015 - 17:44

Lea otras preguntas en las etiquetas