Linux 如何检查bash和其他shell配置文件中的差异

Linux 如何检查bash和其他shell配置文件中的差异,linux,bash,shell,unix,ksh,Linux,Bash,Shell,Unix,Ksh,我使用bashprofile在Linux/AIX机器上运行了一些shell脚本。现在我的bash配置文件将被删除,我将拥有kornshell(ksh)或csh(csh)。如何验证我的脚本在kornshell(ksh)或csshell(csh)中是否可以正常运行,即使在删除bashshell之后也是如此。另外,bash和other(ksh,csh)之间常用的命令有什么不同吗。是否有要检查的命令,在运行shell脚本时使用的是哪个shell。首先,这不是问题,您帐户的默认shell与此无关。只要机器

我使用
bash
profile在Linux/AIX机器上运行了一些shell脚本。现在我的
bash
配置文件将被删除,我将拥有
kornshell(ksh)
csh(csh)
。如何验证我的脚本在
kornshell(ksh)
csshell(csh)
中是否可以正常运行,即使在删除
bash
shell之后也是如此。另外,
bash
other(ksh,csh)
之间常用的命令有什么不同吗。是否有要检查的命令,在运行shell脚本时使用的是哪个shell。

首先,这不是问题,您帐户的默认shell与此无关。只要机器上安装了bash,就可以使用它来运行代码。将a添加为脚本的第一行:

#!/usr/bin/env bash
或者,使用bash显式运行脚本:

$ /bin/bash /path/to/script.sh
至于区别,是的,有很多。为bash编写的脚本不会在csh中运行,它们的语法完全不同。它可能在
ksh
上运行,但这取决于您的脚本。并非两个壳的所有特征都相同。例如:

$ cat test.sh
var="foo";
echo $var;

$ bash ./test.sh 
foo

$ ksh ./test.sh 
foo

$ csh ./test.sh 
var=foo: Command not found.
var: Undefined variable.

如上所述,
var=foo
ksh
(bourne shell系列的一部分)中正确运行,但在
csh
中失败。基本上,将每个shell视为自己的编程语言。您不会期望python解释器能够运行perl程序,为什么希望一个shell能够运行为另一个shell编写的脚本

OP writes bash将被删除。 如果您确实无法安装bash。以#开始每个脚本/bin/ksh并检查语法问题:

ksh -n migrated_script
当您使用bash/linux特定的东西时,您需要解决这些问题: AIX将在find(上个小时更改了…)等命令上“丢失”标志,而ksh本身也不同。
不要尝试csh,这是完全不同的。

但是,最好注意
ksh
bash
之间的区别(不过,正如您所演示的,
csh
系列的shell没有那么多),显然,脚本可能会使用shell功能的受限子集,以便它们可以在任何一种情况下运行。是从计算机中删除
bash
,还是只是将登录shell更改为另一个shell?
bash
将从计算机中删除