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

时间:2014-10-03 12:53:57

标签: linux bash shell unix ksh

我有一些shell脚本,我在我的Linux / AIX机器上使用bash配置文件运行。现在,我的bash个人资料将被移除,我将Korn shell (ksh)C shell (csh)。如何验证我的脚本是否可以在Korn shell (ksh)C shell (csh)中正常运行,即使在bash shell被删除后也是如此。此外,bashother (ksh, csh)之间的常用命令是否有任何不同之处。是否有命令检查,在运行shell脚本时使用了哪个shell。

2 个答案:

答案 0 :(得分:1)

首先,这不是问题,您帐户的默认外壳是无关紧要的。只要在计算机上安装了bash,就可以使用它来运行代码。添加shebang line作为脚本的第一行:

#!/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=fooksh(属于bourne shell系列)中正确运行,但csh失败。基本上,将每个shell视为自己的编程语言。您不希望python解释器能够运行perl程序,为什么您希望一个shell能够运行为另一个编写的脚本?

答案 1 :(得分:0)

OP写入bash将被删除。 如果你真的无法安装bash。使用#!/ bin / ksh启动每个脚本并检查语法问题:

ksh -n migrated_script

当你使用bash / linux特定的东西时,你需要解决它们: AIX将缺失"像find这样的命令上的标志(改变了最后一小时......)和ksh本身也是不同的。 不要尝试csh,这是完全不同的。