2014-11-05 121 views

回答

11

exec执行指定的命令,取代当前进程而不是开始新的子进程。

如果你在shell提示下键入

bash -l 

,它会调用一个新的shell进程(-l使其成为一个登录shell)。如果您退出该shell进程,您将回到原来的shell进程。

打字

exec bash -l 

意味着新的外壳工艺取代当前的shell进程。这可能会稍微减少资源密集度。

这样做的原因可能是新壳设置其环境(通过阅读您的.bashrc,.bash_profile等)。

更多信息参见bash的文档:用于登录shell从非登录shell

  • Bourne Shell Builtins的区别用于在exec命令文档

    (你应该能够通过输入info bash读取你自己的系统上的说明书。)

  • +0

    谢谢!很好的答案 – matiascelasco 2014-11-05 00:57:55

    1

    这将使用新的bash shell作为登录shell来替换当前的shell。

    +2

    它不只是执行它;没有'exec'的'bash -l'就是这样做的。看到我的答案。 – 2014-11-05 00:58:41

    相关问题