您在终端中键入的命令与您在脚本中包含的命令之间有什么区别吗?
答案1
您的终端运行一个 shell(很可能是bash
),它会请求您的命令并运行它们。
除了这种交互模式之外,您还可以使用 shell 从文件运行命令。要执行文件中的命令,您可以直接调用 shell bash script
,也可以使用“shebang”启动文件#!/bin/bash
并使其可执行 ( chmod +x script
)。然后,您可以将脚本视为二进制文件并执行它,或者./script
将其放在 shell 正在查找它的位置。 ( echo $PATH
)
您的交互式 shell 和用于运行的 shell 很可能都是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
内部脚本甚至不可见。
答案2
一般来说,答案是“否”,shell 中的命令在脚本、语法和语义上都是相同的。
但是有一些与环境配置相关的小细节(使用哪些变量以及设置它们的内容)。
Linux 选择的交互式 shell 是 bash,但脚本编写经常使用其他解释器( ,它是,
sh
的前身,与 bash 同等),因此您必须考虑使用什么 shell(当前 shell 的名称)传统上保存在变量中,尝试输入)。bash
ksh
SHELL
echo $SHELL
交互式会话和脚本执行的同一解释器的配置可能存在差异。
答案3
不。脚本是您可以在终端中键入的命令列表。
您可以将脚本的全部内容粘贴到终端中,结果将与运行它的结果相同。
相反,您可以将终端命令“保存”在文件中,并将其转换为可重用的脚本,并与家人和朋友共享。