首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在发出命令"exec<>5“后自行退出的Shell会话

在发出命令"exec<>5“后自行退出的Shell会话
EN

Stack Overflow用户
提问于 2015-11-21 10:24:43
回答 2查看 105关注 0票数 1

当在Linux或MacOS中发出下面两个命令时,Shell会话退出,没有显示任何错误消息。

代码语言:javascript
复制
➜  ~  sh
sh-3.2$ exec<>5
sh-3.2$ exit    ==> 'exit' was issued by the shell itself!

这是“/bin/sh”的缺陷吗?有人能提供任何洞察力吗?

/bin/sh关于我的RHEL:

- sh -4.1$ sh-版本GNU bash,版本4.1.2(1)-release (x86_64-redhat-linux-gnu)版权(C) 2009年自由软件基金会公司。

/bin/sh在我的MacOS上:

-release(x86_64-apple-darwin14 14)版权(C) 2007自由软件基金会(➜)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-21 13:25:35

"<“之前的默认文件描述符是stdin,所以将命令读入exec 0<>5。也就是说,将stdin替换为对名为"5“的文件的读/写。由于文件是空的,shell退出(不再有输入)。如果实际将shell命令放入文件中,则可以看到这种情况发生。试试这个:

代码语言:javascript
复制
echo 'echo here i am; sleep 3' >5
exec <>5
票数 1
EN

Stack Overflow用户

发布于 2015-11-21 10:46:15

当引用诸如Linux或Unix之类的命令行时,exec是一个BOURNE和POSIX shell命令,它用exec之后指定的命令替换当前的shell进程。此命令不创建新的PID。例如,如果要运行exec <command>,则shell将被该命令替换。当该命令退出时,shell将退出。

您也可以查看这些链接。

exec.htm

What are the uses of the exec command in shell scripts?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33842212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档