Answers:
您的终端运行一个shell(最有可能是bash
),它是一个询问您的命令并运行它们的命令。
除了这种交互模式之外,您还可以使用Shell运行文件中的命令。要执行文件中的命令,您可以直接调用shell bash script
,也可以使用“ shebang”启动文件#!/bin/bash
并将其设置为可执行文件(chmod +x script
)。然后,您可以将脚本视为二进制文件,然后以的形式执行,./script
或将其放在您的shell寻找它的地方。(echo $PATH
)
您的交互式外壳程序和用于运行的外壳程序很可能都是bash
。从“第一天学习linux”的角度来看,bash在两种模式下的工作原理完全相同。-很久以后,您可能会发现一些细微差别。如果您真的想详细了解,我建议您阅读man bash
并搜索提及“互动”的地方。(您可以通过按来搜索手册页/
。)
需要注意的重要一件事是该脚本是作为新进程运行的。这尤其意味着脚本中设置的变量在调用shell中不可见。
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
如果没有导出a
,内部脚本甚至都不可见。
通常,答案是“否”,shell中的命令在脚本,语法和语义上相同。
但是有一堆与环境配置有关的细微差别(使用了哪些变量以及设置了哪些变量)。
Linux的交互式shell是bash,但是脚本编写经常使用其他解释器(sh
,它是,的前身bash
,ksh
与bash相提并论),因此您必须考虑使用了什么shell(当前shell的名称)传统上是存放在变量中SHELL
,请尝试键入echo $SHELL
)。
交互式会话和脚本执行的同一解释器的配置可能有所不同。
否。脚本是您可以在终端中键入的命令列表。
您可以将整个脚本粘贴到终端中,其结果将与运行该脚本相同。
相反,您可以将终端命令“保存”在文件中,然后将其转换为可重复使用的脚本,并与家人和朋友共享。
source script_file
。它将在当前上下文中编辑ENV变量。./script_file
除非export
明确使用,否则在运行脚本时不会修改ENV 。
export
这样,脚本也无法修改调用外壳程序的任何变量。诸如PWD,已定义的别名,函数之类的东西也是如此。只能以交互方式或通过获取文件来更改它们。但是,是的,第一天可能不会有人迷路。:)