问题就出在标题中:在UNIX shell中运行exec csh
时会发生什么?为什么?
答案 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)命令。