$BASH_SOURCE

UART全功能测试指南:环路/DMA/RS485/硬件流控实战 UART(通用异步收发器)是嵌入式系统中最基础的串行通信接口,其核心原理基于起始位、数据位、校验位与停止位的异步帧结构,依赖精确的波特率时钟同步与采样重建机制。在工业与物联网场景中,UART不仅需保障基本通信可靠性,更需支持DMA卸载、RS485半双工自动方向控制、RTS/CTS硬件流控等进阶能力,以提升实时性、抗干扰性与系统资源效率。典型应用涵盖调试日志输出、传感器数据采集、Modbus RTU总线通信及固件空中升级。本指南聚焦UART外设测试实践,覆盖环路自检、DMA吞吐验证、RS485时序对齐、硬件流 阅读详情

转自:http://www.708luo.com/?p=24

今天遇到一个需求,获取当前执行脚本。
如果是sh test.sh或者./test.sh的运行方式,那么很简单,直接使用$0就可以了。 
那么如果是source test.sh或者. ./test.sh的方式运行呢?$0就变成了”-bash”了。
google了一下,这个时候就需要使用$BASH_SOURCE了。(bash版本>=3.0)

?
1
2
3
4
5
6
7
8
9
<font size= "2" >[u1@localhost test ]$ sh test .sh
test .sh
test .sh
[u1@localhost test ]$ source test .sh
- bash
test .sh
[u1@localhost test ]$ cat test .sh
echo $0
echo $BASH_SOURCE< /font >

另外在测试source运行脚本时,有些误操作,导致在执行命令时,都会首先输出一下当前运行命令。

如下所示:

?
1
2
3
4
5
<font size= "2" >[u1@localhost performance]$ cd tools/
cd tools/
[u1@localhost tools]$ cd ..
cd ..
[u1@localhost performance]$< /font >

看起来实在是有点多余,作为一个有轻微洁癖的人,当然想办法要消除它。不过一时竟不知如何下手,而且这个现象也不好描述,就算想google也不行呀。

不过我看到另外打开的一个section是没有这个问题的,因此想到对比两个section的env。

一对比还真发现有些不同,SHLVL这个变量正常的section为1,会首先输出执行命令的section为3。

所以怀疑到是在section运行了bash的原因,在会首先输出执行命令section里面连续输入两次exit之后,现象消失了。

再次在该section里面输入bash,并没有重现之前的现象。

运行bash –help看了一下,怀疑是bash –v/—verbose的原因。再次尝试输入bash -v,现象重现。

前后花了不少时间,藉此记录一下~


VBA一键汇总多个工作簿-名称相同的工作表-的指定区域数据 VBA一键汇总多个工作簿-名称相同的工作表-的指定区域数据 日常工作,我们经常需要汇总相同格式的工作簿的某个工作表的数据 如1月业绩、2月业绩。。。。12月业绩等 姓名 数量 数据22 22 数据23 23 数据24 24 数据25 25 数据26 26 数据27 27 数据28 28 数据29 29 数据30 30 数据31 31 数据32 32 数据33 33 数据34 阅读详情

相关推荐

高分7(GF7)卫星数据制作平原地区DSM/DEM(三)——可信度分割

李国春(接上)

副组长的博客 1714

Shell中的BASH_SOURCE

 BASH_SOURCE[0] 等价于 BASH_SOURCE ,取得当前执行的 shell 文件所在的路径及文件名。dirname 去除文件名中的非目录部分,仅显示与目录有关的部分。 如 /home/abc/test.sh 内容如下: #!/bin/bash echo "${BASH_SOURCE[0]}" echo "${BASH_SOURCE}" echo "$(dirname "${BA...

苍穹尘的博客 8878

详细介绍pytorch重要的API

Tensor 是 PyTorch 中最基本的数据结构,提供了多种创建和操作张量的函数。Autograd 提供了自动求导功能,可以跟踪 Tensor 上的操作并计算梯度。损失函数用于衡量模型预测值与真实值之间的差异,提供了多种损失函数。是构建神经网络的基础类,提供了定义网络层和前向传播的方法。提供了 GPU 计算的支持,包括设备管理、内存管理等。提供了一些常用的函数式操作,如激活函数、损失函数等。提供了常用的数据集、模型架构和图像转换工具。提供了数据加载和预处理的工具,包括。

hello! 1223

SHELL【3】-关于 BASH_SOURCE

shell bash_source

m0_46535940的博客 1123

FPGA驱动OV5640:从SCCB协议到图像数据采集的实战解析

本文详细解析了使用FPGA驱动OV5640摄像头模组的完整流程,从SCCB协议通信、寄存器配置到图像数据采集。重点阐述了SCCB(与I2C类似)协议的实现细节、关键的上电复位时序,以及如何通过状态机解析视频流时序并捕获图像数据,为嵌入式视觉开发提供了实战指南。

weixin_29191761的博客 187

企业级Windows 10镜像封装实战:从规划到部署的完整指南

系统部署与镜像封装是企业IT运维中的核心基础技术,其原理在于通过创建预配置的系统模板,实现大规模计算机环境的快速、标准化部署。这项技术的核心价值在于将重复性手动操作转化为自动化流程,显著提升运维效率,保障环境一致性,并强化安全基线管理。在实际应用场景中,它尤其适用于新设备批量初始化、系统恢复和标准化环境构建。本文聚焦于Windows 10镜像的封装实践,深入探讨了使用Sysprep进行系统通用化处理以及通过DISM工具捕获WIM格式镜像的具体方法,为企业IT人员提供从零构建标准化系统镜像的完整路径。

weixin_33843947的博客 356

linux获取当前执行脚本

原文链接 今天遇到一个需求,获取当前执行脚本。 如果是sh test.sh或者./test.sh的运行方式,那么很简单,直接使用$0就可以了。 那么如果是source test.sh或者. ./test.sh的方式运行呢?$0就变成了”-bash”了。 google了一下,这个时候就需要使用$BASH_SOURCE了。(bash版本>=3.0) [u1@localhost te...

weixin_33812433的博客 359

【雕爷学编程】Arduino动手做(71)---红外遥控器及接收模块3

雕爷学编程,Arduino动手做,开源硬件,创客传感器,红外遥控器及接收模块

雕爷学编程 2289

shell 中的 BASH_SOURCE 和 dirname

BASH_SOURCE[0] 等价于 BASH_SOURCE ,取得当前执行命令的 shell 文件所在的路径(可以是相当路径或绝对路径)及文件名。在shell脚本中,$0表示脚本本身,类似于C中的argv[0],所以脚本可以使用 dirname $0来定位脚本的路径。2 . 执行 sh /tmp/trino-server-371/test.sh。dirname 去除文件名中的非目录部分,仅显示与目录有关的部分。3 . 执行 ./test.sh。1. 创建一个临时脚本。案例二:获取绝对路径。

laidongxu666的博客 862

SAP SEGW 事物码里的 Function Import

开放数据协议(OData)包括标准的 CRUD (创建、检索、更新和删除)操作,这些操作映射到 HTTP 方法的 POST、GET、PUT/MERGE 和 Delete 几类。此外,OData还支持进一步的服务操作:,这些操作可以由HTTP方法GET或POST调用,用于处理不能映射到标准 CRUD 操作的任何内容。通过在数据模型中创建 ,可以在 service Builder 中实现此类额外的服务操作。例如,您可以为以下自定义操作创建函数导入:Work Item confirmation检查航班的可用性虽然

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 995

直击高频编程考点:字符串知识及经典算法题总结

字符串相关基本练习题总结(最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等)

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

linux中${bash_source[0]}和$0的区别

一个shell(bash)脚本有两种执行方式: 直接执行,类似于执行二进制程序 source加载,类似于加载库文件 $0保存了被执行脚本的程序名称。注意,它保存的是以二进制方式执行的脚本名而非以source方式加载的脚本名称。 例如,执行a.sh时,a.sh中的$0的值是a.sh,如果a.sh执行b.sh,b.sh中的$0的值是b.sh,如果a.sh中source b.sh,则b.sh中的$0的值为a.sh。 除了$0,bash还提供了一个数组变量BASH_SOURCE,该数组保存了bash的SOURCE调

wgz7747147820的博客 5617

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

获取shell脚本当前路径

脚本文件所在路径 path=(cd"(cd "(cd"(dirname “$0”)"; pwd) 脚本当前执行的路径 $(PWD)

zrq293的博客 269

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Shell脚本被source时选择跳过一些语句

If you run test1.sh, you'll see test1.sh test1.sh exit   If you run test2.sh, you'll see test2.sh test1.sh     test1.sh   #!/bin/sh ech

lifewalk的专栏 810

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

获取bash文件所在的目录绝对路径以及获取函数方法名称

shell中获取bash文件的绝对路径以及获取函数方法名称的方法

yadicoco49的博客 4450

linux 如何获取当前文件路径(source如何获取当前文件路径 bash如何获取当前文件路径)...

bash 如何获取当前文件的绝对路径#!/bin/bash exportbashpath=$(cd`dirname$0`;pwd) echo$bashpathsource 文件获取当前文件的绝对路径#!/bin/bash #下面是输出当前文件的绝对路径 cd$(dirname$BASH_SOURCE) #echo$(pwd)/$(basename$B...

weixin_33973609的博客 2292

关于 BASH_SOURCE

BASH_SOURCE[0] 等价于 BASH_SOURCE, 取得当前执行的shell文件所在的路径及文件名。 如/home/abc/test.sh 内容如下: #!/bin/sh echo "${BASH_SOURCE[0]}" echo "${BASH_SOURCE]}" echo "$( dirname "${BASH_SOURCE[0]}" )" DIR="$( cd "

大可的杨先森的博客 1136

linux脚本之路---脚本的三种引用以及原理

1 fork(./) 这是使用fork的方法,也是最普通的方法,运行的时候回开一个子线(sub-shell)程来执行调用脚本,子线程执行的时候父线程还在,子线程执行完毕之后,回到父线程,子线程中的环境变量继承自父线程(parent-shell),但是不会影响到父线程 2  exec  执行子级命令之后,不在需要执行父级命令,并且不同于fork的是,不需要新开sub-shell ,在同

rually的专栏 751

Linux bash的一些命令与变量

ls : 列出文件, la: 列出隐藏文件, ls -l 列出文件列表 cd mv rm 删除 rm -rf 强制删除 cp 复制 mkdir top 查看系统资源 echo 显示 变量或字符串 cat : cat filename 显示文件; cat file1 file2 &amp;amp;amp;gt; fle3 合并文件 ; cat &amp;amp;amp;gt; file 创建新文件 $BASH_SOURC...

月球上的博客 2886

macOS 如何设置 .sh 文件能够双击运行

macOS 如何设置 .sh 文件能够双击运行 参考:https://stackoverflow.com/questions/5125907/how-to-run-a-shell-script-in-os-x-by-double-clicking 看到这里,你应该已经会写 bash 脚本。 一、如何实现双击运行 例如写了一个 test.sh 脚本文件 修改后缀名,把test.sh 把名字改为 test.command 添加其可执行的属性 chmod +x test.command 二、将执

学习笔记 7801

linux中BASH_SOURCE[0]

在C/C++中,__FUNCTION__常量记录当前函数的名称。有时候,在日志输出的时候包含这些信息是非常有用的。而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非字符串,其中数组的第一个元素为当前函数的名称。可能初看有点难以理解,为什么FUNCNAME要是一个数组呢?看看下面的例子,你就明白了。 1 #!/bin/bash 2 3 functi...

weixin_38278993的博客 2298

linux bash source 0,linux中BASH_SOURCE[0](转)

在C/C++中,__FUNCTION__常量记录当前函数的名称。有时候,在日志输出的时候包含这些信息是非常有用的。而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非字符串,其中数组的第一个元素为当前函数的名称。可能初看有点难以理解,为什么FUNCNAME要是一个数组呢?看看下面的例子,你就明白了。1 #!/bin/bash23 function test_fun...

weixin_39633134的博客 310

linux中BASH_SOURCE[0](转)

转自:http://www.cnblogs.com/sunfie/p/5943979.html 在C/C++中,__FUNCTION__常量记录当前函数的名称。有时候,在日志输出的时候包含这些信息是非常有用的。而在Bash中,同样有这样一个常量FUNCNAME,但是有一点区别是,它是一个数组而非字符串,其中数组的第一个元素为当前函数的名称。可能初看有点难以理解,为什么FUNCNAME要是一...

weixin_30439067的博客 157

linux shell脚本被包含是什么意思?.命令和source命令(在脚本中运行脚本,脚本中调用脚本)(脚本包含,父子脚本)

在 shell 编程中,当一个 shell 脚本被另一个 shell 脚本包含,即用或source命令包含,则被包含的脚本在当前 shell 进程内执行,并且可以访问当前 shell 进程的环境变量和函数。此时,$0代表的是主脚本的名称,而数组则包含了当前脚本的名称和被包含的脚本的名称。因此,用来获取当前脚本(包括被包含的脚本)所在目录的路径。

Dontla的博客 566

wsl ubuntu linux环境变量重复 环境变量不生效source .profile source .bashrc

$PATH越来越长,此时重新打开一个窗口就会恢复正常,但是有时会发现刚才添加的环境变量在新的shell窗口中没有生效,还要执行source命令因为source命令更新的环境变量是临时起作用,只在当前shell中生效。

Heyuanfly的博客 3393
上一篇: hadoop源码分析环境搭建
下一篇: 日志打印两次(问题)
heipacker
博客等级 码龄17年 9粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值