为什么对一个任务使用不止一种外壳?

时间:2018-10-05 02:36:46

标签: linux bash ksh csh

我对高性能计算还很陌生,并且已经继承了一些正在执行的任务的现有代码。现在,我有一个基于Linux的HPC,它使用MPI和PBS来排队和运行作业。我继承的是python脚本,该脚本可动态构建PBS脚本并将其提交到队列,但是通过单个作业的过程,在各个位置调用.sh,.csh和.ksh脚本,并且大多数shell脚本是非常简单,通常少于10行。在一项工作中使用多种不同口味的贝壳有什么好处?有什么明显的理由我不应该将它们全部转换为单一口味吗?

1 个答案:

答案 0 :(得分:1)

  

在单个作业中使用多种不同口味的贝壳是否有优势?

极不可能。

这些shell之间的主要区别(特别是在这种规模下)仅是它们的语法。特别是,对于某些控制结构,例如iffor,csh使用一种更像“ C”的语法; ksh与您可能熟悉的Bash语法更加相似。它们的功能集本质上是相同的。

使用这些解释器的最可能原因很简单:脚本是由不同的作者编写的,很久以前,在围绕Bash shell的使用达成共识之前。 (如果它们足够大,甚至有可能当时Bash不存在-csh和ksh分别于1978年和1983年发布,而Bash直到1989年才出现。)