LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 666|回复: 3

有什么命令能取代当前的shell(在脚本中)[基本解决]

[复制链接]
发表于 2004-4-18 17:57:08 | 显示全部楼层 |阅读模式
我的意思是没有fork,直接exec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$exec $TargetShell
可以在shell提示符下取代当前的shell
( 如果你的shelllevel是1, 那么,以下代码会让你logout)
$exec /bin/bash
$exit
Login:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
但在shell脚本中, shell会fork一个新的shell来执行脚本文件;
所以, 以下代码无法成功logout:
$cat execsh
exec /bin/bash
$./execsh
$
$exit
exit
$
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
先行谢过了
发表于 2004-4-18 18:01:58 | 显示全部楼层

回复: 有什么命令能取代当前的shell(在脚本中)

最初由 folklore 发表
我的意思是没有fork,直接exec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$exec $TargetShell
可以在shell提示符下取代当前的shell
( 如果你的shelllevel是1, 那么,以下代码会让你logout)
$exec /bin/bash
$exit
Login:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
但在shell脚本中, shell会fork一个新的shell来执行脚本文件;
所以, 以下代码无法成功logout:
$cat execsh
exec /bin/bash
$./execsh
$
$exit
exit
$
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
先行谢过了

那当然啦,你的exec命令取代了脚本的进程而不是当前shell的进程。
logout命令即可。
发表于 2004-4-18 18:02:23 | 显示全部楼层
用点.来执行脚本或用花括号
. urscript
or
{ urscipt; }
发表于 2004-4-18 18:34:28 | 显示全部楼层
对,很多linux脚本都是用exec来执行的,像比较典型的rc等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表