我知道source并.做同样的事情,我会惊讶地发现标题中的其他命令对不是那么相同的事情(因为我正在运行bash作为我的shell,$SHELL [script]并且bash [script]是等价的,对吗? ).
那么执行脚本的三种方法之间的区别是什么?我问,因为我刚刚得知采购脚本与执行脚本完全相同.在某种程度上,我从运行"实验"和阅读手册页中找不到明显的方法.
通过在我编写的非常简单的脚本上盲目地调用这些函数,我找不到其他微妙的差异?在阅读了上述相关答案之后,我可以强烈地猜测,我的问题的答案将是一个非常简单的解释,但在某种程度上,我几乎从未完全发现自己.
这是我做过的"实验":
$. myScript.sh
"This is the output to my script. I'd like to think it's original."
$source myScript.sh
"This is the output to my script. I'd like to think it's original."
$bash myScript.sh
"This is the output to my script. I'd like to think it's original."
$$SHELL myScript.sh
"This is the output to my script. I'd like to think it's original."
$./myScript.sh
"This is the output to my script. I'd like to think it's original."
$myScript.sh
"This is the output to my script. I'd like to think it's original."
Run Code Online (Sandbox Code Playgroud)
Dev*_*lar 12
. script并source script执行script 当前环境中的内容,即不创建子shell.从好处来看,这可以script影响当前环境,例如更改环境变量或更改当前工作目录.在不利方面,这可以script影响当前的环境,这是一个潜在的安全隐患.
bash script传递script给bash解释器执行.无论shebang script本身给出什么都被忽略了.("Shebang"指的是第一行script,它可以例如读取#!/bin/bash,或者#!/usr/bin/perl,或#!/usr/bin/awk指定要使用的解释器.)
$SHELL script传递script给你要执行的当前shell解释器.这可能是,也可能不是bash.(环境变量SHELL保存当前shell解释器的名称.$SHELL如果运行bash,则评估为/bin/bash,具有前一段中详述的效果.)
./script执行script 当前工作目录中的文件内容.如果没有此类文件,则会生成错误.内容$PATH对发生的事情没有影响.
scriptscript 在列出的目录中$PATH查找文件,该文件可能包含也可能不包含当前工作目录.script执行此目录列表中的第一个,可能是也可能不是当前工作目录中的目录.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |