exec命令可以用来替代当前shell;换句话说,并没有启动子shell。使用这一命令时任何环境都将被清除,并重新启动一个shell。
它的一半形式为:
exec command
其中,command通常是一个shell脚本。
描述exec命令最贴切的说法是:它践踏了你当前的shell。
当这个脚本结束了,相应的会话可能也就结束了。
但是,exec在对文件描述符进行操作的时候(也只有在这个时候),它不会覆盖你当前的shell。
下面举几个例子:
1、exec 3</tmp/1.txt //以“只读方式”打开/tmp/1.txt,文件描述符对应为3
2、exec 3>/tmp/1.txt //以“只写方式”打开/tmp/1.txt,文件描述符对应为3
3、exec 3<>/tmp/1.txt //以“读写方式”打开/tmp/1.txt,文件描述符对应为3
4、exec 3<&- //关闭文件描述符3
附录:常见的文件重定向命令
command > filename 把标准输出重定向到一个新文件中
command >> filename 把标准输出重定向到一个文件中(追加)
command 1 > fielname 把标准输出重定向到一个文件中
command > filename 2>&1 把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把标准错误重定向到一个文件中
command 2 >> filename 把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2 把command命令以filename文件作为标准输入,以filename2文件作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到delimiter分界符
command <&m 把文件描述符m作为标准输入
command >&m 把标准输出重定向到文件描述符m中
command &m<&- 关闭文件描述符m