exec

exec并不启动新的shell,而是用要被执行的命令替换当前shell进程,并且将老进程的环境清掉,而且exec命令厚的其他命令将不再执行,
假设在一个shell中执行 exec echo 'hello' 在正常的输入一个hello后shell会退出,因为这个shell进程已经被替换成仅仅执行echo命令的一个进程,执行结束自然就退出了

命令执行结束,退出shell,然后后一直卡死在那

要避免出现这种状况,一般见exec放到一个shell脚本中,由主脚本调用这个脚本,主脚本在调用子脚本执行时,当执行到exec后,该子脚本进程就被替换成相应的exec命令,
注意source 或者 . 号,不会为新脚本新建shell,知识将脚本包含的命令在当前shell执行,

exec典型用法是与find联用,用find找到匹配的文件,然后交给exec处理

find / -name "*.conf" -exec ls -l {} \;

find / -name "*.conf" -exec rm -f {} \;
posted @ 2019-10-07 21:56  π=3.1415926  阅读(145)  评论(0编辑  收藏  举报