关于linux source,export命令及一些疑惑的解决

shell 与 export命令 用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令 或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。 此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建 的shell。当一个脚本程序运行完毕,脚本shell将终止,返回到执行该脚本之前的shell。 立即下载

source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。

 

source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。同样的,当前脚本中配置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile和 .profile 等等。例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。

比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK ,发现没有值,假如您用source来执行 ,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是 source不同他就是在本shell中执行的,所以能够看到结果.

 

source命令的一个妙用
在编译核心时,常常要反复输入一长串命令,如
make mrproper
make menuconfig
make dep
make clean
make bzImage
.......

这些命令既长,又繁琐。而且有时候容易输错,浪费你的时间和精力。如果把这些命令做成一个文件,让它自动按顺序执行,对于需要多次反复编译核心的用户来说,会很方便。用source命令可以办到这一点。它的作用就是把一个文件的内容当成是shell来执行。先在/usr/src/linux- 2.4.20目录下建立一个文件,取名为make_command:

在其中输入如下内容:
make mrproper && make menuconfig &&
make dep && make clean && make bzImage &&
make modules && make modules_install &&
cp arch/i386/boot/bzImge /boot/vmlinuz_new &&
cp System.map /boot && vi /etc/lilo.conf &&
lilo -v
文件建立好之后,以后每次编译核心,只需要在/usr/src/linux-2.4.20下输入

source make_command

就行了。这个文件也完全可以做成脚本,只需稍加改动即可。这里主要是让大家理解source的用法。如果你用的不是lilo来引导系统,可以把最后两句话去掉。配置你自己的引导程序来引导新内核。

 

shell编程中的命令有时和C语言是一样的。&&表示与,||表示或。把两个命令用&&联接起来,如 make mrproper && make menuconfig ,表示要第一个命令执行成功才能执行第二个命令。对执行顺序有要求的命令能保证一旦有错误发生,下面的命令不会盲目地继续执行。


小测试
1 建立test.sh
  #!/bin/bash
  export s=/home/jboss/
2
  执行命令: source test.sh
            echo $s
  结果输出: /home/jboss/

3  新开个shell
   执行命令:  ./test.sh
              echo $s
   结果:  没有输出s值


结论:
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出。
2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量);
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。3、不用export定义的变量只对该shell有效,对子shell也是无效的。

直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的。
source可以让脚本影响它们的父shell环境,这和export去影响子shell环境相反.

ROS2_control 对机器人控制(不完整,有时间再更新) 会提示安装好其他相应的东西# 本来应该还要有ros-humble-gz-ros2-control,但是直接安装提示定位不到ros2 control --help # 输出 Commands:list_controller_types 输出可用的控制器类型及其基类list_controllers 输出已加载控制器的列表、类型和状态list_hardware_components 输出可用硬件组件列表list_hardware_interfaces 输出可用命令和状态接口列表。 阅读详情

相关推荐

react +ant desiagn pro实现按钮操作权限控制

在ant desiagn pro中提供了一个access用于对权限进行控制,需引入useAccess和Access

Sylvasylva的博客 2211

shell export

围绕以下几个问题来学习export命令: 1.什么是export命令? 2.为什么要用export命令? 3.怎么使用export命令? 1.什么是export命令?   ♦用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行 shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统...

SeaSky_Steven的博客 612

氮化镓GaN电机驱动实战:从器件原理到EPC驱动中心

电机驱动是工业自动化和电动交通的核心,功率器件的选择直接决定系统效率与可靠性。传统硅基IGBT和MOSFET在开关速度、损耗方面存在瓶颈,而氮化镓(GaN)作为宽禁带半导体,凭借高电子迁移率、低栅极电荷和近乎为零的反向恢复电荷,正成为电机驱动领域的热门选择。EPC建立电机驱动中心,提供完整的评估平台,覆盖从低压家电到中压伺服的应用场景。文章从GaN器件原理出发,对比传统硅器件,详解三相BLDC/PMSM驱动系统的搭建、栅极驱动与Layout设计、死区时间设置及参数计算实例,并分享测试中遇到的振铃、EMI等高

weixin_29168675的博客 323

【Shell 命令集合 系统设置 】⭐⭐⭐Linux 置环境变量 export命令 使用指南

export命令是Linux中的一个内建命令,用于设置环境变量。环境变量是在操作系统中用于存储各种配置信息的一种机制。通过设置环境变量,可以影响系统的行为和程序的运行。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 6053

基于OpenSSL的CA建立及证书签发(签发多域名/IP)

自签SSL证书(多域名/IP) 本文基于以下环境: 内核信息:Linux zabbix 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 系统版本:CentOS Linux release 7.6.1810 (Core) OpenSSL版本:OpenSSL 1.0.2k-fips 26 Jan 2017 【前言】 在基于OpenSSL的CA建立及证书签发一文中(后面统.

hobby云说 4647

Eplan P8 API二次开发--插入符号(Symbol)功能(Function)并定义属性

1、目的 使用Eplan API在页中自动插入某个符号并按约定规则自动设置好属性 2. 步骤 一、基础信息 比如要在Eplan中自动插入一个电机的符号并定制属性,我们先要确定要插入的符号名,可以在Eplan中获取如下符号(Symbol)信息 可以知道我们待插入的符号名称为M3_1, 接下来,使用Visual Studio建立类库项目,并引用Eplan Api库 二、获取符号变量(SymbolVariant) 在Eplan中,当一个符号(Symbol)被插入到页中,这个符号的引用即变为一个(Function

如是道程序人生 4529

Shell - 03 深刻理解export关键字:再也不会犯迷糊

最近在被Shell脚本中的export关键字所困!记录一下,谈谈自己的理解。 0、预热:粗略了解Linux父、子进程 1、Shell执行脚本的几种方式 2.1 export实战 0、对Linux父进程、子进程一点点粗略了解 这里仅做我自己的简要理解,因为每一个深究都是一门大学问,没必要,但再次深深感觉到计算机基本组成原理知识的重要性。在此只是为了有助于利于export。 Linux是一个多用户...

神是念着倒 5953

【库卡机器人】接线步骤

准备X11插头接线,X11插头可以接入机器人外部安全回路接线,其中外部使能信号线也接在此接口上,如果机器人系统没有配置外部使能装置,那个此接口上的外部使能信号端须短接,短接规则为:20-21、23-22、31-30、33-32。持续按住使能键,保持使能上电状态,分别按住示教器右侧每个轴对应的+或-按键,测试机器人每一个轴是否能正常运行,如果一切正常,说明机器人控制正常,机器人可以正常使用。将一根黄绿色等电位线接入其中的一个接地端,并与机器人的接地端相连,使得控制柜与机器人等电位。

qq_45161762的博客 9440

Shell内置命令——export

export 是一个Shell内置命令,用于将变量设置为环境变量,使其在当前Shell及其子Shell中都能被访问。环境变量通常用于配置Shell环境、系统行为、应用程序参数等。

Mitos的博客 1615

AI时代,程序员何去何从?别慌,看完这篇你就明白了

AI时代程序员的发展方向 摘要:随着AI代码助手的普及,程序员行业面临变革。本文通过实际案例展示AI写代码的能力与局限:AI能生成基础功能代码(如RESTful API、数据处理脚本),但缺乏业务理解、系统设计和复杂逻辑处理能力。程序员的核心价值在于需求分析、架构设计、性能优化等高层能力。未来程序员应: 掌握AI工具提升效率 专注于创新和架构设计 培养业务理解能力 持续学习新技术 AI不会取代程序员,但会淘汰不会使用AI的程序员。建议开发者拥抱AI工具,将其作为助手而非威胁,聚焦高价值工作。

yunque_xianguang的博客 908

【Jlink & C#】通过C#实现Jlink RTT上位机的功能

某天看到安富莱家的自己开发的调试器可以实现输出中文调试信息到自己编写的Jlink RTT上位机上,觉得无比神奇,略好奇到底是如何做的,找了很久,发现其上位机的对应的实现好像也没有完全开源出来。后来经过很多搜索确认,知道了几个事实:那么有没有可能用C#来控制Jlink呢?答案是,有!!! 解决思路在于,C#调用JLinkARM.dll里面的函数 这里转载下我认为很有意义的发现结合以上的几个发现,加上我自己的测试,我把我对接JLinkARM.dll的C#接口分享出来,不保证都能用,我只是测试了几个常用的功能,R

一只爱做笔记的码农 9150

shell中的 export是啥作用

shell中的 export是啥作用

xie__jin__cheng的博客 1343

Linux磁盘扩容实战:用parted命令无损扩展/data分区(附常见报错解决方案)

本文详细介绍了在Linux生产环境中使用parted命令对已挂载的/data分区进行在线磁盘扩容的完整实战流程。通过风险评估、状态检查、parted工具深度解析及实战演练,指导用户安全完成动态扩容,并提供了常见报错如'Partition is being used'、MBR 2TB限制等的解决方案,确保业务不中断、数据不丢失。

weixin_29207439的博客 297

linux export命令(export指令)source命令(source指令)

export可新增,修改或删除环境变量,供后续执行的程序使用。source 无论脚本有无运行权限,都可以逐行执行脚本,并且把脚本中的变量传递给父shell,如果变量使用了export,则会传递给系统变量。无论脚本有无运行权限,都可以在子shell中运行脚本,脚本变量不会保存到父shell和系统变量中。./只能运行有运行权限的脚本,并且只能在子shell中使用变量,不会传递给父shell和系统变量。而source 则是使脚本中的变量保存在该shell中。Linux export命令用于设置或显示环境变量。

Dontla的博客 3213

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LinuxShell编程中source和export命令

一, 1-3执行内部原理一样,会新建一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的,改变的变量不会被带回父shell.根据上一点分析:source命令一般的用途是,打开一个shell终端,在shell终端中执行source脚本,可以设置环境变量和函数,这些环境变量和。这个命令的返回状态是零,除非指定了无效的选项,或者其中一个名称不是有效的shell变量名,或者"-f"指定的不是一个shell函数的名称.否则, 位置参数不会被改变.

fedorayang的专栏 3855

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

linux export的作用和source命令

用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。

kmesg的专栏 3762

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

linux下的export和source命令

1、source命令 source ~/.../../file source命令作用:source是bash shell的内置命令,在当前shell下读取并执行“file中的命令” 通常用于重新执行刚修改完的初始化文档。 如在linux中修改了./bashrc启动初始化文件,这时可以用source命令重新执行,使得修改生效而不用注销再次登录。 与./直接执行脚本不同,直接执行是在子shell运行的,结果并没有反映到父shell中。source是直接在本shell中运行的,不会启动一个新的shell,所以脚

qq_41253960的博客 8519

linux中 export 作用 及 source 的用法

一、linux脚本文件中export 变量的作用: 1. export 用于声明一个环境变量: export variable=value 2. 该环境变量只在本进程和其子进程中可以访问。 3. 如果是在系统级的配置文件中,如 /etc/profile中 export 一个变量,那么这个变量就会在整个系统运行期间都起作用 4. 如果在用户级 ~/.bash_profile 之类的文件中,则每次启动shell都会去读这个文件,所以每次打开shell也是可以取到这个值的。 5. 如果在某一次运行中,手动e..

wudinaniya的博客 5609

Linux中的export,source,bash

export命令 文末有详细举例说明 export命令用于设置或显示环境变量。 在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。同时,重要的是,export的效力仅仅是该次登录操作。注销或者重新开一个窗口,export命令给出的环境变量都不存在了。 语法 export [-fnp][变量名称]=[变量设置值] 其中: -f:代表...

weixin_44572041的博客 1160

macOS和Linux下source和export命令

Linux下source和export命令 source命令用法 // 两种用法 source filename . filename source作用 和sh、bash相识但不一样,下面看一下他们的区别: 1.sh filename重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell无论怎么改变变量都不会被带回父shell。 2...

bym12138的博客 5873

linux下 export命令和source命令区别

Linux下 export 命令用于设置或显示环境变量。 $ help export export: export [-fn] [名称[=值] ...] 或 export -p 为 shell 变量设定导出属性。 标记每个 NAME 名称为自动导出到后续命令执行的环境。如果提供了 VALUE 则导出前将 VALUE 作为赋值。 选项: ...

Li03 582

linux source,export命令

linux source,export命令<br /><br />source命令用法:<br /> source FileName<br /> 作用:在当前bash环境下读取并执行FileName中的命令。<br /> 注:该命令通常用命令“.”来替代。<br /> 如:source .bash_rc 与 . .bash_rc 是等效的。<br />source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是sourc

clozxy的专栏 2073

linux 中source和export

结合其它人的理论和自己的实践,简单解释一下两个命令,source命令用于处理文件,模式是 : source filename,它会把filename文件中的变量添加到环境变量中,也可以理解为马上编译了一下filename中的变量,存在了系统缓存中,而不用通过重启来使filename中变量生效。 export命令:在解释这个命令之前需要弄清楚shell脚本执在linux命令客户端程序的执行原理,无

zbajie001的博客 1001
上一篇: 多平台注意点之OS
下一篇: 交叉编译基础知识汇总
oopDesigner
博客等级 码龄18年 36粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值