Linux 中的 exec 命令和示例
Linux 中的 exec命令用于从 bash 本身执行命令。此命令不会创建新进程,它只是用要执行的命令替换 bash。如果 exec 命令成功,则不会返回到调用进程。
句法:
exec [-cl] [-a name] [command [arguments]] [redirection ...]
选项:
- c:用于在空环境下执行命令。
- 名称:用于传递名称作为命令的第零个参数。
- l:用于将破折号作为命令的第零个参数传递。
注意: exec命令不会创建新进程。当我们从终端运行 exec 命令时,正在进行的终端进程被作为 exec 命令的参数提供的命令替换。
exec 命令可以在两种模式下使用:
- 使用命令作为参数执行:在第一种模式下,exec 尝试将其作为命令执行,将剩余的参数(如果有)传递给该命令并管理重定向(如果有)。
示例 1:
示例 2:
exec 命令搜索$PATH变量中提到的路径以查找要执行的命令。如果未找到该命令,则 exec 命令以及 shell 会以错误方式退出。
- Exec without a command:如果没有提供命令,重定向可以用来修改当前的shell环境。这很有用,因为它允许我们根据需要更改 shell 的文件描述符。与前一种情况不同,即使在 exec 命令之后该过程仍会继续,但现在根据重定向修改标准输入、输出和错误。
例子:
这里 exec 命令将 shell 的标准更改为 tmp 文件,因此在 exec 命令之后执行的所有命令都将其结果写入该文件。这是在没有任何命令的情况下使用 exec 的最常见方法之一。