什么是扩展名为.sh的文件?
它是一个Bourne shell脚本。它们在许多变体的类UNIX操作系统中使用。它们没有“语言”,并由您的shell(终端命令解释器)解释,或者如果第一行以以下形式:
#!/path/to/interpreter
他们将使用特定的解释器。您的文件第一行为:
#!/bin/bash
这意味着它使用了Bourne Again Shell,也称为bash。实际上,它是好旧的sh的替代品。
根据解释器的不同,文件可能用不同的语言编写。
请记住,在UNIX世界中,文件的扩展名并不能决定文件的类型(参见下面的“如何执行shell脚本”)。
如果你来自DOS / Windows世界,你会熟悉具有.bat或.cmd扩展名(批处理文件)的文件。它们在内容上不相似,但在设计上类似。
如何执行shell脚本
与一些不安全的操作系统不同,*nix不仅依赖于扩展名来确定如何处理文件,还使用权限。这意味着,如果您尝试下载后运行shell脚本,那么它就像尝试“运行”任何文本文件一样。 ".sh"扩展名只是为了方便识别该文件。
您需要使文件可执行。假设您已将文件下载为file.sh
,则可以在终端中运行:
chmod +x file.sh
chmod
是一个用于更改文件权限的命令,+x
设置执行权限(在这种情况下是所有人)然后再加上文件名。
你也可以在图形用户界面(GUI)中完成此操作。大多数情况下,你可以右键单击文件并选择属性;在 XUbuntu 中,权限选项看起来像这样:
![File permissions in XUbuntu](https://istack.dev59.com/WiI5J.webp)
如果您不想更改权限,也可以强制 shell 运行命令。在终端中,您可以运行以下命令:
bash file.sh
脚本中的第一行应该与shell相同。
它有多安全?
您可能觉得奇怪,您必须手动执行另一个任务才能执行文件。但这部分是出于强烈的安全需求。
基本上,当您下载并运行bash脚本时,这与有人告诉您“按顺序在计算机上运行所有这些命令,我保证结果良好且安全”是一样的。问问自己是否相信提供此文件的当事方,问问自己是否确定已从与您认为的相同的位置下载了文件,甚至可以瞥一眼内部是否有异常(尽管这需要您了解*nix命令和bash编程)。
不幸的是,除了上面的警告之外,我不能逐步描述您应该做什么来防止计算机发生恶意事件;所以请记住,任何时候您获取并运行来自某人的可执行文件时,实际上都在说,“当然,您可以使用我的计算机来做某事”。