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,已定义的别名,函数之类的东西也是如此。只能以交互方式或通过获取文件来更改它们。但是,是的,第一天可能不会有人迷路。:)