El comando exec en Linux se usa para ejecutar un comando desde el propio bash. Este comando no crea un nuevo proceso, simplemente reemplaza el bash con el comando que se ejecutará. Si el comando exec tiene éxito, no vuelve al proceso de llamada.
Sintaxis:
exec [-cl] [-a name] [command [arguments]] [redirection ...]
Opciones:
- c: Se utiliza para ejecutar el comando con entorno vacío.
- un nombre: se usa para pasar un nombre como argumento cero del comando.
- l: se usa para pasar el guión como el argumento cero del comando.
Nota: el comando exec no crea un nuevo proceso. Cuando ejecutamos el comando exec desde la terminal, el proceso de terminal en curso se reemplaza por el comando que se proporciona como argumento para el comando exec.
El comando exec se puede utilizar de dos modos:
- Ejecutar con un comando como argumento: en el primer modo, el exec intenta ejecutarlo como un comando pasando los argumentos restantes, si los hay, a ese comando y administrando las redirecciones, si las hay.
Ejemplo 1:
Ejemplo 2:
El comando exec busca la ruta mencionada en la variable $PATH para encontrar un comando para ejecutar. Si no se encuentra el comando, el comando exec y el shell salen con un error.
- Ejecutar sin un comando: si no se proporciona ningún comando, las redirecciones se pueden usar para modificar el entorno de shell actual. Esto es útil ya que nos permite cambiar los descriptores de archivo del shell según nuestro deseo. El proceso continúa incluso después del comando exec, a diferencia del caso anterior, pero ahora la entrada, la salida y el error estándar se modifican de acuerdo con las redirecciones.
Ejemplo:
Aquí, el comando exec cambia el estándar del shell al archivo tmp y, por lo tanto, todos los comandos ejecutados después del comando exec escriben sus resultados en ese archivo. Esta es una de las formas más comunes de usar exec sin ningún comando.