views:

45

answers:

3

The default shell on the the system is csh but I want to write a script in bash. How do I write a script that will run bash and then convert back to csh at the end.

I tried this but it doesn't work:

bash
var=Hello
echo $var
csh
+2  A: 

Define it using the sha bang

#!/bin/bash

at the starting of your file.

Alberto Zaccagni
To convert back to csh at the end, I would then use `#!/bin/csh` ?
Elpezmuerto
No, at the end of the execution your script will return to the default shell, in your case csh.
Alberto Zaccagni
+2  A: 

You don't need to change shells back again. When the script is run, it will be run by a sub-shell (which exits at the end of the script), and the parent shell is unchanged. So, as already suggested, the only thing you have to do is ensure the script is run by the correct shell, and the 'shebang' is the way to do that:

#!/bin/bash
var=Hello
echo $var

That's all it takes.

Jonathan Leffler
+1  A: 

The command you are looking for is exit. When typing at the keyboard use exit instead of csh to get back to csh. When you enteredcsh, that just started a new csh session on top of the csh and bash sessions already running.

%bash
$ var=Hello
$ echo $var
Hello
$ exit
exit
%

As others have said, when using a script:

#! /bin/bash
var=Hello
echo $var
exit # You don't need exit; but it's okay here.
Frayser