从bash进入shell

时间:2013-02-19 09:16:45

标签: bash csh

我有一个bash脚本,需要在shell里面运行一些命令。

#!/bin/bash

echo entering_to_cshell
csh
echo in_cshell
exit
echo exited_from_cshell

为什么此脚本不按预期运行?它只打印entering_to_cshell并且不会从shell退出。

2 个答案:

答案 0 :(得分:2)

使用

csh

你开始一个新的子shell,你的脚本没有被执行。这就是为什么没有执行以下命令的原因。你的脚本等待这个子shell结束,如你所说,从未发生过。

尝试

csh -c "echo in_cshell"

这样您就不会创建一个不受脚本影响的新子shell。

答案 1 :(得分:0)

只需在脚本中调用csh,即可启动交互式csh子shell。您会注意到,一旦退出csh会话,您的脚本将继续使用后续回显并退出exit

要从您的bash脚本向csh传递一系列命令,一种方法是使用Here Document语法将命令重定向到csh

#!/bin/bash

echo entering_to_cshell

csh <<EOF
echo in_cshell
exit
EOF

echo exited_from_cshell

EOF条目之间的行将被视为由csh解释的脚本。