.command,.tool和.sh文件扩展名有什么区别?


22

我看到了一些有关执行命令行脚本的问题?我看到提到了.command和.tool扩展名。我一直使用.sh。这些不同的脚本有什么区别?某些扩展允许不同的命令吗?

Answers:


15
  • .command-(终端外壳脚本)专门将外壳脚本与Terminal关联。有时称为“终端文件”。
  • .tool-(终端外壳脚本)与“ .command”文件扩展名相同。
  • .sh-(Shell脚本)与Xcode 4.1关联的基本Shell脚本。

通过编程,我确定前两个(.command与.tool)之间的区别是细微的,而第三个本质上是一个简单的默认Shell脚本。并且实际上与Xcode 4.1关联。

在此处输入图片说明


5
“…我确定前两个(.command与.tool)之间的区别是细微的……”实际上,这些区别是不存在的:-)终端将它们相同地对待。这两个文件扩展名在终端的Info.plist中映射为完全相同的文件类型,并且终端不尝试检测提供了哪个扩展名。此外,除了具有不同的扩展名意味着它们可以具有不同的默认应用程序以外,所有这三种文件类型的内容都是相同的。它们都是shell脚本。
克里斯·佩奇

2

我相信默认情况下,.sh文件是Xcode所“拥有”的,因此,如果您双击其中一个,它将在Xcode中打开而不是执行。

默认情况下,.command和.tool文件归Terminal所有,因此,如果双击其中之一,它将在Terminal中打开并执行。

我不知道它们之间有任何其他区别。

我也曾经使用.sh作为shell脚本,但是最近我停止了,因为我开始用Zsh而不是sh来编写我的shell脚本,并且试图记住某个命令是否以.sh结束还是令人困惑。 .zsh,所以我最终将它们全部放入〜/ bin /并确保它们是可执行的,并且根本不使用文件扩展名。


实际上,它们不在Xcode中打开。而且我的机器上确实安装了Xcode。
daviesgeek 2011年

1
.sh文件可以在Xcode中打开(单击控制»»“打开方式”将显示Xcode作为选项),但是它们在哪个应用程序中打开取决于首先安装的应用程序并“声明”扩展名。如果在Xcode之前安装了另一个应用程序并声明.sh,则该应用程序不会显示为使用Xcode打开。
TJ Luoma

1
您是正确的:除了不同的文件扩展名使它们能够具有不同的默认应用程序外,这些文件的内容和处理是相同的。它们都是shell脚本文件。
克里斯·佩奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.