Answers:
一个脚本是一个文件,该文件:
一个shell脚本是一个脚本,其解释为一个壳。在unix世界中,“壳”是指类似于伯恩壳的壳族。现代的此类外壳(ash,bash,ksh,zsh等)符合POSIX外壳标准。更一般而言,“外壳”一词可以包括其他命令解释器,例如csh,tcsh,fish等。
一个可执行文件是可以执行的任何文件。为了有效地可执行文件,文件需要具有两个属性:
ls -l
查看:x
字符必须出现在权限列中。该文件的格式必须是系统识别为可执行文件的格式。可执行格式可以分为几类:
#!
后跟文件路径。为了执行这样的文件,内核执行解释器程序并将其路径作为参数传递给脚本。请注意,成为可执行文件取决于系统。例如,amd64 Linux二进制文件可在amd64 Linux系统上执行,但不能在32位系统上执行。在正常的Linux安装中,Android二进制文件不可执行。如果存在Wine,则Windows可执行文件仅在Linux上可执行。以开头的脚本#!/usr/local/bin/ruby
只有在处有程序时才可执行/usr/local/bin/ruby
。
Shell脚本通常是可执行的。但是,如果您没有执行权限,则它可能是不可执行的。您仍然可以通过将其显式传递给解释器(例如bash /path/to/script
)来对其进行解释-“已解释”是一种说法“执行”的奇特方式。
外壳脚本:
Shell脚本是将由Shell解释的一系列命令(通常是sh或与sh兼容的shell,有时是另一个。)
脚本名称可以但不必以“ .sh”或“ .bash”或“ .csh”等结尾(提示应启动的shell)。
为了清楚起见,我假设:脚本名称为script
,启动脚本的外壳为bash
。
在shell中启动它的典型方法是:bash /absolute/path/to/the/script
或bash ./relative/path/to/the/script
。这样,它不需要设置可执行位,因为它仅由bash读取,然后bash执行内容。
它可以也可以设置+ X(可执行文件),允许直接从您当前的shell会话启动它:/绝对/路径/到/的/脚本(或./relative/path/to/the/script)。当心:默认情况下,以这种方式启动时,它是通过您键入的shell 或 posix shell(其行为取决于操作系统)启动的,因此它可能不是本应运行的shell。这就是为什么您可以(并且应该)将其指定为脚本的第一行:#!/ path / to / good / shell向您的操作系统指示该脚本实际上应该由/ path / to / good / shell启动。
可执行文件:
可执行文件是为应该由其启动的用户/组设置了“ x”位的文件。它通常可以是“二进制”或脚本。
提示:file /some/file
可以告诉您有关文件内容的更多信息。尝试file /usr/bin/bash
或 file /etc/profile
查看一些示例。