如何在脚本中更改Shell

4

系统的默认shell是csh,但我想用bash编写一个脚本。我应该如何编写一个脚本来运行bash,并在结束时切换回csh?

我尝试了这个方法,但它不起作用:

bash
var=Hello
echo $var
csh

使用DOS .bat文件时,您可能需要担心切换回来(尽管我不确定该概念是否适用于那里)。在Unix中,您不必担心这个问题。 - Jonathan Leffler
3个回答

3
您需要的命令是exit。在键盘上输入时,请使用exit而不是csh,以返回csh。当您输入csh时,这只是在已经运行的cshbash会话之上启动了一个新的csh会话。
%bash
$ var=Hello
$ echo $var
Hello
$ exit
exit
%

正如其他人所说,使用脚本时:

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

2

使用sha bang定义它

#!/bin/bash

在你的文件开头。


在最后转换回csh,我会使用 #!/bin/csh 吗? - Elpezmuerto
1
不,执行结束后你的脚本会返回到默认的shell,对于你来说是csh。 - Alberto Zaccagni

2

您不需要再次更改shell。当运行脚本时,它将由子shell运行(在脚本结束时退出),父shell不会受到影响。因此,如已经建议的那样,您唯一需要做的就是确保脚本由正确的shell运行,而“shebang”是实现这一点的方法:

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

这就是所需的全部。

我尝试了相同的操作,但如果我使用sudo运行脚本,它会返回原始shell。 - mohit sharma
@mohitsharma — 我不清楚你做了什么以及出了什么问题。你最好单独提出一个问题来问。 - Jonathan Leffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接