Linux exec Command Explained With Examples

Linux exec command with examples

The exec command in Linux is used to execute the Shell command, without creating any new process instead uses the currently running process to execute any command.  For instance, we run a command with the exec command from the terminal, where that command will use the terminal process rather than creating a new process. The exec command is useful for older computers having fewer system resources as it uses the existing processes and consumes no processor to execute commands.

This guide will cover the exec command using these helping topics:

  • How to Use the exec Command in Linux?
  • exec Command Options
  • Basic Use of the exec Command
  • Use the exec Command Within the Shell Script
  • Redirect Commands To a File Using the exec Command
  • Use the exec Command to Print in an Empty Environment

How to Use the exec Command in Linux?

This section will demonstrate how the exec command works with examples. Let’s first discuss the general syntax of the exec command:

$ exec <options> <command> <redirection>

The above command explanation is:

  • exec: It uses the exec command, and the command written with exec is passed as an argument.
  • options: Add the exec command available option here.
  • command: Put any command where you want to run without creating any new process.
  • redirection: If no option or command is passed to the exec command, it redirects the input to the current shell.

Note: Any command written with the exec command is used as an argument for the exec command.

exec Command Options

The exec command has the following built-in options:

-c This option executes the exec command in an empty environment.
-l The dash is passed as the zeroth argument to the exec command.
-a [name] The [name] is passed as the zeroth argument to the exec command.

Let’s understand the exec command with examples.

Example 1: Basic Use of the exec Command

To understand the working of the exec command, let’s understand it using a simple example. The “ps” command lists the currently running processes, and “echo $$” shows the process ID for the current working shell (terminal):

$ ps
$ echo $$

Check all running processes

The output shows that two processes are currently working. The shell in which the user is currently working has process ID “5676

Let’s pass the command “sleep 50” to the exec command as the argument and check the process ID of this command from another terminal. Pass the sleep 50 commands to the exec command by running this command:

$ echo $$
$ exec sleep 50

sleep exec command for 50 seconds

Now, run the below command in a new terminal to check the process ID of the exec command, which shows that its Process ID is “5676”. It verifies that the exec command uses the previous process rather than opening a new process:

$ ps -ae | grep sleep

Find exec command process ID

The exec PID is “5676”, the same as the previously running program. No new process has been started.

Example 2: Use the exec Command Within the Shell Script

The commands or shell script can be used within the Shell script with the help of the exec command to use already running processes. Using the existing processes to run new commands protects the system from creating new processes and uses fewer system resources.

For instance, the “df -h” and “ls” commands are used within the while loop using the bash script named “testscript.sh” to run these commands by using the existing processes:

#! /bin/bash

while true
do
  echo "1. Disk Usage "
  echo "2. List File & Directories"
  read Input
  case "$Input" in
  1) exec df -h ;;
  2) exec ls ;;
  esac
done

To run the bash script, use the following command:

$ bash testscript.sh

Execute bash script

The user enters the number “2”, which runs the ls command without creating any new process.

Example 3: Redirect Commands To a File Using exec Command

We can use the exec command to redirect the commands to a file. For instance, the “exec” command redirects all the commands to the ”test” file until we exit the terminal:

$ exec > test
$ echo "Before Command."
$ ls
$ echo "After Command"
$ exit

Write exec command output to a file

After running the exit command, the user exits the terminal, and the entered commands output is saved to the “test” file.

To check the content of the “test” file, use the below cat command:

$ cat test

Check output of a file

The output shows that the output of three commands entered after the exec command is stored in the “test” file.

Example 4: Use the exec Command to Print in an Empty Environment

The “c” option of the exec command is used to execute the command in an empty environment. For example, let’s start the bash shell and print the existing Environment variables by running these commands:

$ bash
$ printenv

Check bash environment variables

The output shows the list of environment variables in the bash shell.

Let’s run the same command with the exec command with the “c” option to run it in an empty environment:

$ bash
$ exec -c printenv

Run exec command in empty environment

The output shows that it prints no output, which verifies that it runs in an empty environment.

Conclusion

This exec command runs any command without creating any new process. It uses the existing process to run the commands or scripts passed to the exec command. This article has covered the exec command with examples.

Leave a Reply

Your email address will not be published. Required fields are marked *