“ exec false”如何以及为什么关闭终端?


Answers:


10

exec false通过命令的执行替换当前的shell false(这里不是shell内建但/bin/false还是不管false这是第一位的可执行文件PATH),它迅速退出。如果外壳程序是您的终端仿真器中运行的最顶层进程,则其中没有更多的进程在运行,因此终端仿真器已关闭。

这是关闭终端的一种可接受的替代方式,就像许多类似的命令一样:

exec true
exec sleep 0
exec echo
...

另请参阅:执行命令命令做什么


附带说明一下,bash将在调用之前执行某些清理,exec包括将命令写入.bash_history。因此,如果只想保存到.bash_history同一终端窗口中并在其中启动新外壳程序,则可以键入exec bash
卡巴斯德(Kasperd)

好的,谢谢您完美地回答了我的问题:)
dragonloverlord 2015年

和一个好问题!因此都赞成!;)
Fabby 2015年

@jiliagre exec调用PATH,而不是内置命令。例如,exec [[ $USER = root ]]将返回bash: exec: [[: not found错误。在OP的情况下,false称为/bin/false,而不是内置的shell。否则,答案很好,因此为+1。附带说明一下,exec可以是某种截断命令,即,如果将示例中的这三个命令制作为脚本,那么除了第一个命令外,其他任何操作exec都无法实现,因为exec它将用右边的任何命令替换脚本调用的shell的exec
谢尔盖Kolodyazhnyy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.