选项-l exec shell命令

时间:2016-10-11 08:12:32

标签: linux shell command

请您澄清一下-l shell命令的exec选项的用法。当我运行exec ls | catexec -l ls | cat时,我没有发现任何差异。

1 个答案:

答案 0 :(得分:4)

-l的{​​{1}}选项会在命令名称的开头添加exec。例如:

-

请注意exec -l diff | head -diff: missing operand after '-diff' -diff: Try '-diff --help' for more information. 之前的-。{/ p>

这一切的重点是什么?如果在启动shell的命令之前有diff,它将充当登录shell。来自-

  

登录shell是一个参数为零的第一个字符是 - ,或者是以--login选项开头的一个。

现在,man bash声明:

  

如果提供了-l选项,shell会在传递给command的第0个参数的开头放置一个破折号。这是                 登录(1)的作用。

因此man execexec -l bash作为登录shell运行。为了测试这一点,我们可以使用登录bash执行文件bash的事实,所以:

~/.bash_profile

如果我开始登录bash,将执行命令$ cat ~/.bash_profile #!/bin/sh printf "I am a login shell!\n" 。现在用printf "I am a login shell!\n"进行测试:

exec

没有显示任何内容,我们在非登录shell上。

$ exec bash
$

这里我们有一个登录shell。