加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 有什么区别:“. [script]“或”source [script]“,”b

发布时间:2020-12-13 19:51:27 所属栏目:Linux 来源:网络整理
导读:我知道这个来源和.做同样的事情,我会惊讶地发现标题中的其他命令对不是那么相同(因为我正在运行bash作为我的 shell,$SHELL [script]和bash [script]是相当于,对吗??). 那么执行脚本的三种方法之间的区别是什么?我问,因为我刚刚得知脚本的执行是NOT the exac
我知道这个来源和.做同样的事情,我会惊讶地发现标题中的其他命令对不是那么相同(因为我正在运行bash作为我的 shell,$SHELL [script]和bash [script]是相当于,对吗??).

那么执行脚本的三种方法之间的区别是什么?我问,因为我刚刚得知脚本的执行是NOT the exact same.在某种程度上,我从运行“实验”和阅读手册页中找不到明显的方法.

通过在我编写的非常简单的脚本上盲目地调用这些函数,我找不到其他微妙的差异?在阅读了上述相关答案之后,我可以强烈地猜测,我的问题的答案将是一个非常简单的解释,但在某种程度上,我几乎从未完全发现自己.

这是我做过的“实验”:

$. 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."

解决方法

.脚本和源脚本在当前环境中执行脚本的内容,即不创建子shell.从好的方面来说,这允许脚本影响当前环境,例如更改环境变量或更改当前工作目录.在缺点方面,这是一个潜在的安全隐患.

bash脚本将脚本传递给bash解释器来执行.无论什么shebang由脚本本身给予被忽略. (“Shebang”指脚本的第一行,例如可以读取#!/ bin / bash,或#!/usr/bin/perl,或#!/usr/bin/awk)来指定要使用的解释器.)

$SHELL脚本将脚本传递给您要执行的当前shell解释器.这可能是,也可能不是. (环境变量SHELL保存当前shell解释器的名称.$SHELL,如果运行bash,则计算为/ bin / bash,其效果在前一段中详述.)

./script执行当前工作目录中的文件脚本的内容.如果没有此类文件,则会生成错误. $PATH的内容对发生的事情没有影响.

脚本在$PATH中列出的目录中查找文件脚本,该脚本可能包含也可能不包含当前工作目录.执行此目录列表中的第一个脚本,可能是也可能不是当前工作目录中的脚本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读