source 命令的用法(与 sh Filename、./Filename的区别)

article/2025/11/6 7:38:50

source 命令简单来说,就是读取脚本里的语句,并在当前Shell中执行,脚本里面所有新建、改变变量的语句都会保存在当前shell里。


目录

1、source 命令的使用方法

2、source命令的妙用 

3、source Filename 和 ./Filename的区别


1、source 命令的使用方法

语法格式:source  脚本文件名  或者  . filename (. 和 filename之间有空格)

# 使用source来执行 variable.sh 脚本
linux@linux:~/Templates$ source variable.sh# 在命令行打印 variable.sh 脚本里的变量
linux@linux:~/Templates$ echo $COUNT
1

因为是直接读取脚本内容到当前Shell执行,所以创建的变量可以直接在当前Shell 中使用。

但是如果新开一个终端窗口,相当于一个新的Shell,不会拷贝上一个窗口的环境。 

2、source命令的妙用 

source命令的作用是读取脚本里的语句,并在当前Shell中执行,即便对方不是脚本,只是一个具有执行权限的普通文件,source命令依然会执行里面的语句。有的时候我们需要频繁敲一些比较长而且繁琐的命令,这个时候就可以使用source 命令

比如有一个 myCommand 文件(里面暂时放一些简单的命令)

# myCommand 文件
ps jax | grep mytest
ls -al
pwd

 我们使用source命令来执行这个文件(注意这个文件必须要有执行权限)

 

3、source Filename 和 ./Filename的区别

当一个文件具有执行权限的时候,sh  Filename 和 ./Filename 没有区别,下面主要比对source Filename 和 ./Filename的区别:

  • source Filename:读取脚本里的语句,并在当前Shell中执行。脚本里面所有新建、改变变量的语句都会保存在当前shell里

  • ./Filename:创建一个新的子Shell,并在子Shell中执行。子Shell会继承父Shell的环境,但是子Shell对变量的创建、修改不会更新到父Shell
    • 即便使用export也不会影响到父Shell的环境
    • 父Shell对变量的修改会更新到子Shell
    • 父Shell可以影响子Shell,但子Shell无法影响到父Shell


http://chatgpt.dhexx.cn/article/dfwDjym7.shtml

相关文章

C++ #include expects “FILENAME“ or <FILENAME>

include 标签只能是 #include<FILENAME> 或者 #include "" 要加引号啊

matlab中的imread (line 340) fullname = get_full_filename(filename);

错误提示 错误原因 没有将运行的文件添加到路径中。 解决方法 右击运行文件的文件夹 2.点击添加到路径–>选定的文件夹和子文件夹 3.最后再次尝试运行&#xff0c;问题解决

Already included file name

Already included file name ‘c:/Users/Administrator/Desktop/test/src/components/detailList.vue’ differs from file name ‘c:/Users/Administrator/Desktop/test/src/components/detaillist.vue’ only in casing. The file is in the program because: Imported via ‘…

Linux常见命令-1

一、tail命令 1、参数&#xff1a;tail -f filename 说明&#xff1a;查看filename文件的尾部内容&#xff0c;默认10行&#xff0c;相当于增加参数 -n 10&#xff0c;刷新显示在屏幕上。 示例&#xff1a; 2、参数&#xff1a;tail -n 20 filename 说明&#xff1a;显示file…

(九)Python:文件操作

一、读写文件 Python中使用open(filename,mode)执行打开文件操作。 filename&#xff1a;filename 变量是一个包含了你要访问的文件名称的字符串值。mode&#xff1a;mode决定了打开文件的模式&#xff1a;只读&#xff0c;写入&#xff0c;追加等。所有可取值见如下的完全列…

关于 __dirname和__filename介绍以及使用场景

在每个模块中除了 require &#xff0c;exports 等模块相关 API之外&#xff0c;还有两个特殊的成员&#xff1a; __dirname&#xff1a;用来动态获取当前文件模块所属目录的绝对路径__filename&#xff1a;用来动态获取当前文件的绝对路径 示例&#xff1a; 现有如下一个问题…

AQS的一个cancleAcquire方法,能看到Doug Lea大神的多少细节?

目录 写在前面一、调用时机二、源码分析2.1 node为tail2.2 node为中间节点2.2.1 N2的取消逻辑2.2.2 N3继N2之后取消 2.3 node是头结点的后继节点2.4 并发取消的场景 三、思考与总结 写在前面 第一次读AQS源码时&#xff0c;对cancleAcquire的理解比较肤浅&#xff08;停留在方…

leaq c 汇编语言,汇编语言lea指令使用方法解析

这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 leal #4个字节 leaq #8个字节 lea的用法: leaq a(b, c, d), %rax 首先…

微机原理——指令系统——传送类指令(MOV、LEA、LDS、LES、LAHF、SAHF、XCHG、XLAT、PUSH、POP、PUSHF、POPF)

博主联系方式&#xff1a; QQ:1540984562 QQ交流群&#xff1a;892023501 群里会有往届的smarters和电赛选手&#xff0c;群里也会不时分享一些有用的资料&#xff0c;有问题可以在群里多问问。 【没事儿可以到我主页看看】https://blog.csdn.net/qq_42604176 传送类指令 1&am…

汇编指令lea 和 mov 区别

刚开始学汇编都会接触到指令lea 和mov&#xff0c;但是这两个指令用法看起来很像&#xff0c;会经常误以为两者其实没有很大区别&#xff0c;甚至会误认为两者就是相等的&#xff0c;笔者本人也是很迷&#xff0c;而且书上对lea的讲解又十分有限&#xff0c;但是通过不懈的知识…

x86 LEA 指令

友链 参考链接&#xff1a; https://stackoverflow.com/questions/1658294/whats-the-purpose-of-the-lea-instruction 在使用OllyDBG反汇编一个exe的时候&#xff0c;看到了这样的代码 这部分对应的源代码应该是&#xff1a; return 2*xy;明明是一个乘法和加法运算&#x…

数据传送类指令(PUSH,POP,LEA)

目录 数据传送类指令 堆栈的概念&#xff1a; 进栈指令 &#xff08;PUSH&#xff09; 出栈指令&#xff08;POP&#xff09; 练习 LEA取偏移地址&#xff08;有效地址EA&#xff09;指令&#xff08;去括号&#xff09; LEA和OFFSET区别&#xff1a; 用法注意 LEA和MO…

汇编:lea指令学习

加载有效地址&#xff08;load effective address&#xff09;指令就是lea,他的指令形式就是从内存读取数据到寄存器&#xff0c;但是实际上他没有引用内存&#xff0c;而是将有效地址写入到目的的操作数&#xff0c;就像是C语言地址操作符&一样的功能&#xff0c;可以获取…

汇编中的lea指令的作用,简单清晰明了不废话!

首先看一下intel开发手册上对lea的官方解释&#xff1a; lea&#xff0c;官方解释Load Effective Address&#xff0c;即装入有效地址的意思&#xff0c;它的操作数就是地址&#xff1b; 常见的几种用法&#xff1a; 1、lea eax&#xff0c;[addr] 就是将表达式addr的值放入…

设计模式

简介 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式可以提高代码的可复用性、可维护性、可读性、稳健性以及安全性。 项目中合理地运用设计模式可以完美地解决很多问题&#xff0c;但滥用设计模式不但不会带来任何好处&#x…

设计模式选择题复习

1.在UML提供的图中&#xff0c;&#xff08; &#xff09;用于描述系统与外部系统及用户之间的交互 A&#xff0e;用例图 B&#xff0e;类图 C&#xff0e;对象图 D&#xff0e;部署图 2.在UML提供的图中&#xff0c;&#xff08; &#xff09;用于按时间顺序描述对象之间的交…

单例设计模式

一.何为单例设计模式 如其名字&#xff0c;单例设计模式就是指的是一个类中只允许存在一个对象实例。 在java中&#xff0c;我们存在两种创建单例模式的思路&#xff1a;饿汉式和懒汉式 ①饿汉式&#xff1a;在创建类时直接创建对象实例 public class SingleHungryMan {//建立类…

设计模式在程序中的使用

OO设计的主要目的&#xff0c;在于分割责任&#xff0c;将每个模块的责任降低到合理的程度&#xff0c;并对各个模块进行封装以及降低两个模块之间的耦合度&#xff0c;达到修改一处不影响另外一处的目的。 这个原则其实并不仅仅局限于OO设计&#xff0c;只是OO设计提供了更好…

设计模式之命令模式

命令模式 命令模式的定义非命令模式实现&#xff1a;命令模式的实现&#xff1a; 命令模式的定义 说实话这个模式挺令人纠结的&#xff0c;但从这个模式的定义上来看&#xff0c;有点让人摸不到什么头脑&#xff0c;而且查看资料以后会发现还是有点稀里糊涂的&#xff0c;说懂…

《C++ 设计模式》

作者&#xff1a; 一去、二三里 个人微信号&#xff1a; iwaleon 微信公众号&#xff1a; 高效程序员 设计模式&#xff08;Design Pattern&#xff09;代表了最佳的实践&#xff0c;在面向对象的编程中被很多老鸟们反复使用。使用设计模式有很多好处&#xff1a; 可重用代码保…