在UNIX shell中运行exec csh会发生什么?为什么?

时间:2017-05-28 17:55:23

标签: shell unix exec

问题就出在标题中:在UNIX shell中运行exec csh时会发生什么?为什么?

2 个答案:

答案 0 :(得分:0)

exec命令将当前进程替换为指定的进程,因此Unix Shell不再是Unix Shell,而是突然变成C Shell(csh,这恰好是一种Unix Shell)。为什么?这只是事实上的标准。

答案 1 :(得分:0)

exec将使用新进程替换当前的shell进程。如果您跳过这个,您输入的命令将作为子项启动,并在您退出子项时返回到您的shell。它期望可执行文件作为第一个参数开始。

csh(第一个参数)是可执行文件的名称。它将在PATH中搜索。通常,它会发现系统安装了C Shell(如/bin/csh)或C Shell克隆(如旧版名称下安装的tcsh)。

因此,您正在使用C Shell替换当前的shell会话。除非你是一个留着胡子的Unix大师,否则你不会那么想。通常,C Shell在Posix或Bourne Shell中有一个%提示而不是>

您可以通过退出来恢复它。下次登录时,将启动正常的默认shell(很可能不是csh)。要使shell永久切换,请使用chsh(更改shell)命令。