首页 > 其他分享 >.和source与bash或sh执行脚本时的区别

.和source与bash或sh执行脚本时的区别

时间:2024-09-15 17:56:07浏览次数:13  
标签:脚本 Shell source sh 执行 bash

目录

1. source命令

2. sh/bash命令

3. ./方式


1. source命令

source .bash_profile

. .bash_profile两者等效。

source(或点) 命令通常用于重新执行刚修改的初始化文档。

使用source或 . 命令时,你可以在当前Shell中直接运行一个Shell脚本,而不需要给脚本添加执行权限。这就像是把脚本内容直接放到当前Shell中执行一样。

source script_a.sh

或者

. script_a.sh

注意,在 . 命令和脚本文件之间有一个空格。

2. sh/bash命令

通过sh或bash命令执行脚本时,会在一个新的子Shell中运行脚本,而且脚本不需要有执行权限。子Shell是一个独立的执行环境,脚本中设置的变量不会影响到父Shell。

sh script_a.sh

或者

bash script_a.sh

3. ./方式

使用./方式执行脚本时,会在一个新的子Shell中运行脚本,但是此时脚本需要有执行权限。可以使用chmod +x添加执行权限。

chmod +x script_a.sh
./script_a.sh

另外,使用./方式执行的文件如果包含alias语句,Shell不会将alias别名扩展成对应的命令。解决这个问题可以使用shopt命令开启alias扩展选项:

shopt -s expand_aliases

shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别

结论一: ./*.sh的执行方式等价于sh ./*.sh或者bash ./*.sh,此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本,脚本中设置的变量在脚本执行完毕后不会保存。但是若 script.sh 脚本不是以 #!/bin/bash 开头,那么也不会在子进程中执行。

结论二: source ./*.sh和 . ./*.sh的执行方式是等价的,即两种执行方式都是在当前shell进程中执行此脚本,而不是重新启动一个shell 在子shell进程中执行此脚本,并且脚本中设置的变量在脚本执行完毕后会保存下来。

标签:脚本,Shell,source,sh,执行,bash
From: https://blog.csdn.net/m0_73192692/article/details/142147723

相关文章

  • 【硬件模块】SHT20温湿度传感器
    SHT20是一个用IIC通信的温湿度传感器。我们知道这个就可以了。它支持的电压范围是2.1~3.6V,推荐是3V,所以如果我们的MCU是5V的,那么就得转个电压才能用了。IIC常见的速率有100k,400k,而SHT20是支持400k的(0.4MHz)。SHT20的命令有上面几个,不放中文的原因是中文翻译的好烂,我直接......
  • 痞子衡嵌入式:JLink命令行以及JFlash对于下载算法的作用地址范围认定QN
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是JLink命令行以及JFlash对于下载算法的作用地址范围认定。最近痞子衡在给一个RT1170客户定制一个InfineonMirrorBit类型64MBFlash的SEGGER下载算法,做完之后在JFlash下测试小数据下载没有问题,但......
  • 【webshell 检测工具】ShellSweep:一种 PowerShell/Python/Lua 工具,用于检测指定目录下
    原创Ots安全“ShellSweep”是一个PowerShell/Python/Lua工具,旨在检测指定目录中的潜在WebShell文件。ShellSheep及其工具套件会计算文件内容的熵,以估计文件成为WebShell的可能性。熵值越高,随机性就越强,这是WebShell中常见的加密或混淆代码的特征。它仅处理具有某些......
  • 【Shell】getopt、set
    getopt的用途Shell脚本中,getopt主要用于解析用户通过命令行传递的选项和参数,支持短选项(如-a)和长选项(如--all),并且可以处理带参数的选项(如-ffilename或--file=filename)。getopt的基本用法基本的getopt语法如下:getoptoptstringparametersoptstring:定义可......
  • 工具分享 | JenkinsExploit-GUI - 一款Jenkins综合漏洞利用工具,一键getshell。
    0x00工具介绍JenkinsExploit-GUI是一款Jenkins综合漏洞利用工具。0x01下载链接JenkinsExploit-GUI下载链接:夸克网盘分享0x02功能介绍CVE-2015-8103/CVE-2016-0788CVE-2016-0792CVE-2017-1000353CVE-2018-1000600CVE-2018-1000861CVE-2018-1999002CVE-20......
  • Bash 设置 vi mode
    Bash设置vimodebashshell在行模式编辑内容时,模式为emacs的操作模式查看readline的man手册内容如下$manreadline...editing-mode(emacs) ControlswhetherreadlinebeginswithasetofkeybindingssimilartoEmacsorvi. editing-modecanbesetto......
  • 亚马逊、Shopee如何通过自养号测评优化排名打造爆款商品
    亚马逊作为全球领先的跨境电商平台,每年吸引着大量新商家入驻。对于新入驻的卖家而言,在激烈的市场竞争中脱颖而出,有效提升流量并转化为订单,是亟待解决的关键问题。以下是一些实用的策略和建议:一、如何增加亚马逊新店的流量?1.精准关键词优化:深入研究市场和竞争对手,筛选出与产......
  • 【工具使用】【Shell脚本】【gitlab】下拉所有的仓库代码并指定分支推送给客户仓库
    1 前言这不是项目要结束了么,项目验收要交付源代码,客户在阿里云上买了个云效,需要把我们公司的代码同步上去。首先云效支持各种导入,比如直接贴上你的gitlab地址,再加个token他就会自己同步,但我不能这么做,主要是因为我们公司有的别的项目代码也在一块,只是分支不一样,并且做事情要......
  • 一款类excel可进行显示、在线编辑的纯js表格TableShow控件
        在进行前端显示设计时,传统的方法是以分页显示,逐条提取后修改及保存,非常不利于用户连贯阅读及在线修改。因此,本人将类似excel的一些table表格在线卷动显示、修改及集中保存功能进行了尝试,封装成了一个纯js控件,只通过一句代码进行调用,将数据库查询结果集进行显示和添......
  • WPF this.DragMove() DropShadowEffect
    //xaml<Windowx:Class="WpfApp367.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......