首页 > 其他分享 >Bash—source命令&export命令&bashrc文件

Bash—source命令&export命令&bashrc文件

时间:2023-05-03 14:35:20浏览次数:35  
标签:shell source bashrc 命令 sh export test

当不使用 source 命令执行脚本时,会创建一个子 shell,在该子 shell 中执行完脚本后退出子 shell。不是用 export 定义的变量只对该 shell 有效,对子 shell 是无效的。如下图所示,一开始 VA 没有用 export 定义,所以第一次执行 test.sh 脚本时子 shell 访问不到父 shell 定义的 VA,输出空。只有使用 export 定义的变量才会被复制到子 shell 中,如下图重新用 export 定义了 VA,第二次执行 test.sh 时成功输出了 VA 的值。子 shell 中对变量的修改是无法影响到父 shell 中变量的值,比如说在 test.sh 中执行 VA=123,当执行完 test.sh 后,输出 VA 的值依旧等于 45。

1.jpg

source 命令用于执行一个脚本,但它不像直接执行脚本时,会新建一个子 shell,它是在当前 shell 执行脚本。如下图所示,我并没有用 export 定义 VB,当直接执行 test.sh 脚本时,输出空值,访问不到 VB 变量,但当使用 source 执行 test.sh 时,它成功输出了 VB 的值,并保存了对 VB 的修改。

1.jpg

source 命令的另一个用途,是在脚本内部加载外部库。下面脚本在内部使用 source 命令加载了一个外部库,然后就可以在脚本里面,使用这个外部库定义的函数。source 有一个简写形式,可以使用一个点(.)来表示,比如. test.shsource test.sh是一样的。

source ./lib.sh
function_from_lib

export 命令常用来修改环境变量,比如执行export PATH=$PATH:~,那么就可以在任何目录下执行 test.sh 脚本,因为 Linux 会去 PATH 变量包含的路径下寻找 test.sh,如果存在多个 test.sh,那么只会执行第一个找到的 test.sh。export 设置环境变量是暂时的,只在本次登录中有效,可修改如下文件来使命令长久有效:

  • 修改 profile 文件,执行命令echo 'export PATH=$PATH:~' >> /etc/profilesource /etc/profile,但修改这个文件对所有用户都会产生影响,所以不建议使用这个。
  • 修改当前用户根路径下的~/.bashrc文件,执行命令echo 'export PATH=$PATH:~' >> ~/.bashrcsource ~/.bashrc,这样就只对当前用户生效,不会影响到其它用户。

bashrc文件主要保存个人的一些个性化设置,如命令别名、路径等,每次修改 .bashrc后,使用 source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。一般会在.bash_profile文件中显式调用.bashrc。登陆 linux 启动 bash时首先会去读取 ~/.bash_profile文件,这样 ~/.bashrc也就得到执行了,你的个性化设置也就生效了。利用这一特性,可以实现一些个性化设置,如:Linux 系统开机执行自动某个脚本文件等,这在自动化运维方面有一定的用处。比如在~/.bashrc中追加以下命令:

echo 'Hello world'
python3 /home/username/test.py

那么在开机时 shell 就会输出 Hello world并执行 test.py 脚本

标签:shell,source,bashrc,命令,sh,export,test
From: https://www.cnblogs.com/214txdy/p/17369018.html

相关文章

  • 使用psscan检测dkom攻击——对于那些直接修改内存对象的rootkit,例如通过dkom实现进程
    pslist和psscan的区别列表:“pslist”模块使用与将在实时计算机上执行的任务列表命令相同的算法。而且,Windows任务管理器也使用相同的方法。上面提到的命令“pslist”遍历Windows内核维护的活动进程结构列表。windows内核使用EPROCESS数据结构来描述每一个......
  • windows-"运行"对话框-命令
    打开"运行"对话框:按win+R......
  • Docker CLI docker compose ps常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • g++ 命令总结
    g++是C++编译器,用于将C++代码编译为可执行文件。基本语法:g++[选项]文件名常用选项:-ofilename:指定输出文件名为filename;-Wall:打印所有警告信息;-Wextra:打印更多的警告信息;-std=c++11:将语言标准设置为C++11;-std=c++14:将语言标准设置为C++14;-std=c++17:将语言标准设置为C......
  • 简单聊聊,使用Vue.js编写命令行界面,前端开发CLI的利器
    Temir介绍Temir,一个用Vue组件来编写命令行界面应用的工具.开发者只需要使用Vue就可以编写命令行应用,不需要任何额外的学习成本.<scriptlang="ts"setup>import{ref}from'@vue/runtime-core'import{TBox,TText}from'@temir/core'constcounter=ref(0)setIn......
  • 值得收藏:K8S的kubectl常用命令已经按场景分好类,请您查阅。
    kubectl知多少kubectl是K8S中的一个命令行工具,主要用于管理和操作K8S集群。kubectl通过向K8SAPI发送REST请求,允许用户与K8S集群中的各种资源进行交互,例如Pod、Service、Deployment等。kubectl提供了一种简单而灵活的方式来管理和操作K8S集群,它支持交互式和批处......
  • Open Source Mirror in China
    阿里巴巴腾讯华为清华大学中国科技大学上海交通大学南京大学南方科技大学浙江大学......
  • Dockerfile基础命令及简单应用
    Dockerfile从dockercommit的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解......
  • 【Linux】基本命令
    1 前言这节我们来看一些Linux下的常用的一些命令哈。2  cd 切换目录cd(changedirectory:英文释义是改变目录)切换目录cd../;跳到上级目录cd/opt;不管现在到那直接跳到指定的opt文件夹中cd~;切换当前用户的家目录。root用户的家目录就是root目录。3  pwd显示......
  • keil中error: #5: cannot open source input file “xxxxx“: No such file or direct
    error:#5:cannotopensourceinputfile“xxx.h“:Nosuchfileordirectory一般是.h没有添加到项目中。将包含.h文件或文件夹添加进去即可 ......