1、source
source 的解释,内置的shell命令,其功能是什么?什么是shell?
|
source 指令的作用:
1、刷新当前shell环境 2、在当前环境使用source执行Shell脚本 3、从脚本中导入一个shell功能函数 4、从另一个Shell脚本中读取变量
一、概述
source命令是一个内置的shell命令,用于从当前shell会话中的文件读取和执行命令。source命令通常用于保留、更改当前shell中的环境变量。简而言之,source一个脚本,将会在当前shell中运行execute命令。
source命令的用法:
source FILENAME [ARGUMENTS] source可替换为.
二、用途
1、刷新当前shell环境
家目录下的.bash_profile 是一个隐藏文件,主要是用来配置bash shell的。source ~/.bash_profile 则可让这个配置文件在修改后立即生效。
2、在当前环境使用source执行Shell脚本
Shell脚本不知道你在当前Shell环境中定义的变量。source命令可解决这个问题。
# 定义一个变量
[root@localhost ~] url=www.baidu.com
# 写测试脚本source.sh
[root@localhost ~] vi source.sh
[root@localhost ~] cat source.sh
#!/bin/sh
echo $url
#此时用sh执行脚本
[root@localhost ~] sh source.sh
输出为空
#用source执行脚本时,找不到环境中定义的变量
[root@localhost ~] source source.sh
www.baidu.com
#用.执行脚本
[root@localhost ~] . source.sh
www.baidu.com
#注意 . 和./source.sh方式的区别
[root@localhost ~] ./ source.sh
-bash: ./source.sh:Permission denied
加可执行权限
[root@localhost ~] chmod +x source.sh
[root@localhost ~] ./ source.sh
输出为空
以上实例,除了重点source外,sh和./的区别与联系,source和.的等价也需注意。
3、从脚本中导入一个shell功能函数
#写脚本定义函数tool
[root@localhost ~] vi func.sh
#!/bin/bash
tool(){
echo "function test!"
}
#在当前shell中导入脚本func.sh中定义的功能
[root@localhost ~] source func.sh
[root@localhost ~] tool
function test!
4、从另一个Shell脚本中读取变量
#创建一个带有变量的脚本var.sh
[root@localhost ~] vi var.sh
#!/bin/bash
a=1
b=2
c=3
#创建脚本read.sh,脚本内读取var.sh的变量
[root@localhost ~] vi read.sh
#!/bin/bash
source ~/var.sh
echo $a
echo $b
echo $c
#执行read.sh查看是否成功获取
[root@localhost ~] sh read.sh
最后,关于exec和source: source命令在当前shell中执行脚本,而exec命令在新的shell中运行。
原文链接:https://blog.csdn.net/llg___/article/details/126250474
|
2 什么是Linux Shell
Shell是一种命令行解释器,它允许用户与操作系统进行交互。在Shell中,有许多内置命令可用于执行各种任务,包括文件操作、进程管理、环境变量设置等。在本文中,我们将详细介绍一些常见的Shell内置命令及其示例用法。
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。
简介
Linux提供了像MicrosoftWindows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供了很多桌面环境系统,其操作就像Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。GNOME。
每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。
同Linux本身一样,Shell也有多种不同的版本。主要有下列版本的Shell:
BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。
Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
C Shell:是SUN公司Shell的BSD版本。
Z Shell:The last shell you’ll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。
3 export
Linux export命令
语 法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登录操作。
参 数:
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
中文名export
语 法变量名称]=[变量设置值]
参 数-f 代表[变量名称]中为函数名称
参数介绍
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执行时,它不会自动得到原来脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
登录到系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多shell,每个shell都是由某个shell(称为父shell)派生的。
在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。
export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
#echo $PKG_PATH 在任何时候建立的变量都只是当前shell的局部变量,所以不能被shell运行的其他命令或shell程序所利用。 export ,是把你设置的环境变量传给当前SHELL的子SHELL,使其在子SHELL中有效。
4 source 环境和export 二者区别
source 命令和 export 命令在设置环境变量方面有一些不同:
-
source 命令:
source 命令用于在当前 shell 环境中执行指定的脚本文件,并确保其中的变量、函数等在当前 shell 中可用。
- 主要用途是在当前 shell 中加载和执行 shell 脚本文件,而不是启动一个新的子 shell 来执行脚本。
-
export 命令:
export 命令用于将变量设置为环境变量,使其在当前 shell 中可用,并且在当前 shell 中启动的任何子进程中也可用。
- 主要用途是将变量导出为环境变量,以便它在当前 shell 和任何由当前 shell 启动的子进程中都可见。
区别总结:
source 主要用于加载和执行脚本文件,在当前 shell 中设置变量和执行脚本。
export 主要用于将变量设置为环境变量,以便在当前 shell 和其子进程中都可见。
在设置环境变量时,通常会结合使用这两个命令。例如,在脚本文件中定义变量并使用 export 将其设置为环境变量,然后使用 source 命令来加载该脚本文件以确保变量在当前 shell 中可用。