Regarding the popular sports community, I call "csh bashing":
"csh is an absolutely terrible shell."
Maybe, but tcsh is a very easy to use, easy to use, lightweight and stable shell, available almost everywhere with pretty uniform features. Although, he has some quirks that upset you until you learn how to navigate them. This helps to have a pretty-printer for long scripts.
The function "source file [argv]" is the closest to the routine in tcsh, and since it shares the same namespace with the caller, it is reasonable that the exit command works more like the "return" statement in this context. Note that the exit statement pauses processing in the source file and returns a value through $ status.
Sourced tcsh files also allow the caller to place a separate $ argv without losing the original or not, in which case the caller $ argv is displayed in the source file. If the source file is written to $ argv, it is also changed for the caller.
If you define an alias that creates the file, you can compile several fairly universal multifunctional scripts:
alias func 'set srcf = "test.tcsf"; set args = (! *); source $ srcf $ args'
However, if the game has several source files, you need to accept some namespace management conventions to ensure that they do not attack each other. On the bottom line, there are reasons why tcsh is still in use after all these years, especially because it is fast and easy to use as soon as you understand the quirks.
source share