我有一些shell脚本,我在我的Linux / AIX机器上使用bash
配置文件运行。现在,我的bash
个人资料将被移除,我将Korn shell (ksh)
或C shell (csh)
。如何验证我的脚本是否可以在Korn shell (ksh)
或C shell (csh)
中正常运行,即使在bash
shell被删除后也是如此。此外,bash
和other (ksh, csh)
之间的常用命令是否有任何不同之处。是否有命令检查,在运行shell脚本时使用了哪个shell。
答案 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=foo
在ksh
(属于bourne shell系列)中正确运行,但csh
失败。基本上,将每个shell视为自己的编程语言。您不希望python解释器能够运行perl程序,为什么您希望一个shell能够运行为另一个编写的脚本?
答案 1 :(得分:0)
OP写入bash将被删除。 如果你真的无法安装bash。使用#!/ bin / ksh启动每个脚本并检查语法问题:
ksh -n migrated_script
当你使用bash / linux特定的东西时,你需要解决它们: AIX将缺失"像find这样的命令上的标志(改变了最后一小时......)和ksh本身也是不同的。 不要尝试csh,这是完全不同的。