头图

Linux中source命令的使用方式

source命令是一个内置的shell命令,用于从当前shell会话中的文件读取和执行命令。source命令通常用于保留、更改当前shell中的环境变量。简而言之,source一个脚本,将会在当前shell中运行execute命令。
source命令可用于:

刷新当前的shell环境
在当前环境使用source执行Shell脚本
从脚本中导入环境中一个Shell函数
从另一个Shell脚本中读取变量
source命令的语法
source命令它需要一个文件,如果提供了参数,那么将用作传递脚本的位置参数。

source FILENAME [ARGUMENTS]
也可以使用.替代source命令:

. FILENAME [ARGUMENTS]
如何使用source命令

  1. 刷新当前的shell环境
    可以在当前的shell环境中定义一个别名。为ls -al定义一个别名为ll:

[root@localhost ~]# echo "alias ll='ls -al'" >> ~/.bashrc
在~/.bashrc文件中定义完别名,可以使用source命令刷新当前shell环境:

[root@localhost ~]# source ~/.bashrc
现在可以使用ll别名列出当前目录里所有文件了,包括隐藏文件。
Linux中source命令的使用方式Linux中source命令的使用方式

  1. 在当前环境使用source执行Shell脚本
    Shell脚本不知道你在当前Shell环境中定义的变量。source命令可用于在当前会话中执行你的Shell脚本。

下面在定义一个变量:

[root@localhost ~]# website=https://www.linuxprobe.com
Linux中source命令的使用方式Linux中source命令的使用方式
创建一个脚本:

[root@localhost ~]# vim web.sh

!/bin/bash

echo $website
Linux中source命令的使用方式Linux中source命令的使用方式
使用source在当前shell会话中执行它:

[root@localhost ~]# source web.sh
https://www.linuxprobe.com
Linux中source命令的使用方式Linux中source命令的使用方式
当使用sh运行脚本时,找不到环境中定义的变量:
Linux中source命令的使用方式Linux中source命令的使用方式

  1. 从脚本中导入环境中一个Shell函数
    首先创建一个脚本,定义一个函数:

[root@localhost ~]# vim func.sh

!/bin/bash

foo(){
echo "test function!"
}
Linux中source命令的使用方式Linux中source命令的使用方式
要在当前的shell会话中导入上述脚本的功能,使用下面命令:

[root@localhost ~]# source func.sh
下面在终端中执行以下func.sh脚本中的foo函数试试:

[root@localhost ~]# foo
test function!
Linux中source命令的使用方式Linux中source命令的使用方式
source完脚本之后,可以看到在当前回话的终端中可以执行脚本里面的函数。

  1. 从另一个Shell脚本中读取变量
    首先创建带有一些变量的shell脚本,请输入:

[root@localhost ~]# vim var.sh

!/bin/bash

a=1
b=2
c=3
Linux中source命令的使用方式Linux中source命令的使用方式
再创建一个脚本,该脚本读取上一个脚本var.sh中的变量:

[root@localhost ~]# vim read.sh

!/bin/bash

source ~/var.sh
echo $a
echo $b
echo $c
在脚本中首先使用source将var.sh中的变量到处到当前回话,然后echo显示变量值。下面执行read.sh看一下:
Linux中source命令的使用方式Linux中source命令的使用方式

  1. 读取并执行命令
    source命令可以从文件读取和执行命令。下面的一个文本文件中带有两个命令,使用source命令运行该文件,看看是否会执行里面的命令。

下面创建一个文件cmd.txt,保存两个命令:

[root@localhost ~]# cat cmd.txt
ip ad
date
下面使用source执行这个文件:

[root@localhost ~]# source cmd.txt
Linux中source命令的使用方式Linux中source命令的使用方式

总结
source命令在当前shell中执行脚本,而exec命令在新的shell中运行。


Linux资讯速推
《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

22 声望
13 粉丝
0 条评论
推荐阅读
Linux 运维必备 150 个命令汇总
本文章盘点了 Linux 运维必备 150 个命令,可配合Linuxcool网站使用。定位你需要使用的命令,然后去这个网站查询详细用法即可。

刘遄阅读 88

封面图
工具篇:iTerm与Zsh
iTerm2支持许多的主题配色,可以自己定义,也可以参考网上现成的主题配色。我个人比较喜欢draculatheme配色。支持item,vim,phpstorm , 下方存在主题官网路径,按照教程安装即可。

super白4阅读 4.7k

CentOS从零开始部署Nodejs项目
原文地址:[链接]安装nodejs、npm/cnpm {代码...} 安装mysql卸载 {代码...} 安装 {代码...} 启动 {代码...} 登录 {代码...} 修改root密码 {代码...} 允许远程访问,与本地密码区分,是两个密码 {代码...} 安装git...

jigsaw3阅读 5k评论 3

麒麟操作系统 (kylinos) 从入门到精通 - 常用软件安装 - 第三篇 常用软件安装(windows下的习惯)
本篇内容大部分从应用商店进行安装,部分通过官网下载,少部分通过命令行安装。1.原生应用1.1钉钉1.2飞书1.3 蓝信1.4 腾讯文档1.5 金山文档1.6 搜狗输入法(拼音)1.7 五笔输入法1.8 libreoffice官方也带了WPS,...

码上世界3阅读 7.5k评论 17

封面图
深入剖析容器网络和 iptables
Docker 能为我们提供很强大和灵活的网络能力,很大程度上要归功于与 iptables 的结合。在使用时,你可能没有太关注到 iptables 的作用,这是因为 Docker 已经帮我们自动完成了相关的配置。

张晋涛3阅读 1.3k

封面图
openSSH升级公钥失效Permission denied (publickey)解决方案
背景centos系统升级openSSH后,服务器上无法再拉取代码,报错如下:原因服务器重新安装SSH后公钥改变,需要重新安装ssh-keygen -t rsa -C "邮箱地址"生成公钥,删除gitlab原有公钥,但是git pull依然报错如下:依...

兰俊秋雨1阅读 1.2k

Metasploit实现木马生成、捆绑及免杀
在一次渗透测试的过程中,避免不了使用到社会工程学的方式来诱骗对方运行我们的木马或者点击我们准备好的恶意链接。木马的捆绑在社会工程学中是我们经常使用的手段,而为了躲避杀毒软件的查杀,我们又不得不对木...

白风之下1阅读 9k

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

22 声望
13 粉丝
宣传栏