跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

linux中 export 作用 及 source 的用法

一、linux脚本文件中export 变量的作用: 1. export 用于声明一个环境变量: export variable=value 2. 该环境变量只在本进程和其子进程中可以访问。

3. 如果是在系统级的配置文件中,如 /etc/profile中 export 一个变量,那么这个变量就会在整个系统运行期间都起作用。

即使新开shell会话连接甚至,重启了服务器仍可生效。

4. 如果在用户级 ~/.bash_profile 之类的文件中,则每次启动shell都会去读这个文件,所以每次打开shell也是可以取到这个值的。

5. 如果在某一次运行中,手动export一个变量,则只在这次shell的使用中,才能访问这个变量,或者在该shell启动的启动程序中,也是可以访问这个变量的,因为它们是这个shell的子进程。

新开shell连接及重启服务器都会失效。

总之,export 作用就是 把本地变量变成全局变量(实际中叫环境变量) 二、举例验证: 举例验证 前面 一 中的 第 3 条: 在root用户下 vim /etc/profile ,追加一行代码 先不使用 export,

GREET="hello,good morning!"

然后,

source /etc/profile

在当前shell窗口及新的shell窗口中,执行 echo $GREET ,会显示变量值 hello,good morning!

[root@fastdfs ~]# echo $GREET

hello,good morning! 如果切换到 普通用户 wudi ,再次执行 echo $GREET , 就无任何显示。

即使再切换到root用户,仍无显示。

说明  只对当前 shell会话窗口有效果,对新会话窗口无效。

稍作变化,使用 export 在root用户下 vim /etc/profile ,

将

GREET="hello,good morning!" 改为 export GREET="hello,good morning!" eg:

再source 一下

source /etc/profile

此时,再执行 echo $GREET,以及切换到 普通用户 wudi ,再次执行 echo $GREET , 都会显示变量值 hello,good morning!。

即使再切换到root用户,仍可显示。

举例验证前面 一 中 第5条:

新开shell会话连接,会失效:

重启服务器也会失效:

三 shell与export命令 用户登录到Linux系统后,系统将启动一个用户shell。

在这个shell中,可以使用shell命令或声明变量,也可以创建并运行 shell脚本程序。

运行shell脚本程序时,系统将创建一个子shell。

此时,系统中将有两个shell,一个是登录时系统启动的shell,另一 个是系统为运行脚本程序创建的shell。

当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。

从这种意义上来 说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。

在子 shell中定义的变量只在该子shell内有效。

如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内 的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。

export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。

这个过程称之为变量输出。

四 Linux 指令:系统设置--export 功能说明: 设置或显示环境变量。

语  法: export [-fnp][变量名称]=[变量设置值] 补充说明: 在shell中执行程序时,shell会提供一组环境变量。

export可新增,修改或删除环境变量,供后续执行的程序使用。

export的效力仅及于该此登陆操作。

参  数: -f  代表[变量名称]中为函数名称。

-n  删除指定的环境变量。

变量实际上并未删除,只是不会输出到后续指令的执行环境中。

--没卵用。

-p  列出所有的环境变量。

eg: 列出所有的环境变量 export -p

五 linux中 source 的用法 source命令: source命令的功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句 source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

用法: source filename 或 . filename source命令(从 C Shell 而来)是bash shell的内置命令;点命令(.),就是个点符号(从Bourne Shell而来)是source的另一名称。

source filename 与 sh filename 及./filename执行脚本的区别在那里呢?

当shell脚本具有可执行权限时,用sh filename与./filename执行脚本没有区别。

sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell。

source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。

那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面

相关文章