从bash执行tcsh脚本并保持tcsh会话的交互

从bash执行tcsh脚本并保持tcsh会话的交互,bash,shell,io-redirection,tcsh,subshell,Bash,Shell,Io Redirection,Tcsh,Subshell,我有一个tcsh脚本(如下所示),我希望在bashshell的csh中执行它,并希望在文件末尾维护tcsh会话 #!/bin/csh setenv var1 value1 set var2 value2 # ----- some code ----- 我想要如下的东西 bash-> csh abovescript.sh . . . . . output .. . . . tcsh-> echo $var2 value2 tcsh-> exit bash-> ech

我有一个tcsh脚本(如下所示),我希望在bashshell的csh中执行它,并希望在文件末尾维护tcsh会话

#!/bin/csh
setenv var1 value1
set var2 value2
# ----- some code -----
我想要如下的东西

bash-> csh abovescript.sh
. . . . . output .. . . . 

tcsh-> echo $var2 
value2
tcsh-> exit
bash-> echo "back to bash session"
最好的方法是什么?如果我使用
bash--init file script.sh
从tcsh调用bash脚本,这很容易做到,但我无法在tcsh中找到等效的选项

注意
在文件末尾添加
csh
命令将启动一个新的shell会话(没有当前变量),这不是我想要的。

最好的方法可能是在
bash
中重新编写脚本<代码>(t)csh因不适合编写脚本而臭名昭著。我同意,但有些工具是在tcsh中硬编码的,除了使用tcsh,我没有其他选择。以上练习的全部思想是尽可能多地使用bash,并根据需要调用tcsh。您编写了“文件末尾的命令启动新的shell会话(不带当前变量)”。从
bash
导出的任何变量都应该在任何子进程中可用,包括另一个(和不同的)shell。祝你好运。
setenv
export
的(t)csh版本,几乎可以在所有其他shell中找到。您可以在一行cmd上列出多个var名称,如导出v1。。。vN,或者在设置
myVar
的值时,可以执行
export myVar=someValue
。因此,您可以使用
v1=someOthervalue。。。。。其他代码;导出v1 v2…
导出之后发生的地方(例如,在调用
tcsh
脚本之前)。祝您好运。@GaneshGore这可能是
expect
的工作:让它启动交互式
tcsh
会话,然后在将控制权返回给您之前发送
source overscript.csh