当在Linux或MacOS中发出下面两个命令时,Shell会话退出,没有显示任何错误消息。
➜ ~ 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自由软件基金会(➜)
发布于 2015-11-21 13:25:35
"<“之前的默认文件描述符是stdin,所以将命令读入exec 0<>5。也就是说,将stdin替换为对名为"5“的文件的读/写。由于文件是空的,shell退出(不再有输入)。如果实际将shell命令放入文件中,则可以看到这种情况发生。试试这个:
echo 'echo here i am; sleep 3' >5
exec <>5发布于 2015-11-21 10:46:15
当引用诸如Linux或Unix之类的命令行时,exec是一个BOURNE和POSIX shell命令,它用exec之后指定的命令替换当前的shell进程。此命令不创建新的PID。例如,如果要运行exec <command>,则shell将被该命令替换。当该命令退出时,shell将退出。
您也可以查看这些链接。
exec.htm
https://stackoverflow.com/questions/33842212
复制相似问题