csh是一个非常可怕的外壳。(预先声明以避免“不要使用 csh”的不可避免的评论,或者我可能只是为了任何读者而声明:请,如果您重视自己的理智,请不要使用csh。)我有一个csh我试图使大量脚本变得有用,我刚刚发现exit从源文件调用时不会退出脚本。换句话说:
#!/bin/csh
source [file with content "exit"]
echo No reasonable script should print this
Run Code Online (Sandbox Code Playgroud)
产生输出。
有什么办法可以修改这种行为吗?据我所知,我正在修改的脚本的原始作者打算终止主脚本,这当然是可取的行为,并且简单地通过调用上面的示例sh产生该结果,但是什么给出了?这种行为有什么合理的目的吗?(这只是我在咆哮,真正的问题是:csh 是否可以选择更改行为?)
要退出 csh/tcsh 中的源脚本和父解释器,我使用exec /bin/false或exec /bin/true,具体取决于我想要传递回父进程的成功条件。采购 shell 以适当的返回值退出。