`.sh` 和 `.csh` 之间的区别

`.sh` 和 `.csh` 之间的区别

我刚刚安装了 Intel Parallel Studio,现在想要设置系统变量,以便终端可以找到编译器等。

安装指南告诉我运行一些包含的设置脚本或将它们包含在我的 bash 配置文件中等。这很酷。

但它总是说,例如:

使用编译器之前设置环境变量。您可以使用source命令来执行shell脚本compilervars。或编译器变量。西施

然而它并没有解释这两个变体之间的区别。我也无法在网上其他地方找到这两个文件扩展名的任何比较。

我唯一可以推断的是这些.csh文件是 Mac OSX 特定的,从以下行:

在 Linux* 和 OS X* 上,该文件是一个名为compilervars.sh 或compilervars.csh 的shell 脚本

在运行任何操作之前我想了解更多细节。

答案1

.sh表示 Bourne shell ( sh) 或 Bourne Again shell ( bash) 的脚本,通常是其前身的超集。

.csh表示 C shell ( csh) 的脚本,作为一个 shell,它在很大程度上相似,但一旦您开始执行比运行一系列静态命令更复杂的操作,就会显着不同。

这两种 shell 通常都可以在任何 POSIXy 环境中使用,而且实际上这两种 shell 都经常被预先安装,尽管bash(及其表兄弟sh)根据我的经验更加普遍。

我在上面说“指示性”,是因为文件扩展名的概念在技术上并不存在,并且没有语义或语法意义。一个文件可以被命名为script.steveordocumentation.exe或,include.h但实际上仍然是一个 shell 脚本。要获得更明确的确认,请查看文件的第一行。对于设计为直接执行的脚本,它应该以 shebang 行开头,该行以 octothorpe ( #)、bang ( !) 和应运行该脚本的可执行文件的路径开头。例如:

#!/usr/local/bin/bash

或者

#!/usr/bin/python3

相关内容