linux中的export与source
1. export
设置或显示系统环境变量
补充说明
export命令 用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。
一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
语法
export(选项)(参数)
选项
-f:代表[变量名称]中为函数名称;
-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;
-p:列出所有的shell赋予程序的环境变量。
参数
变量:指定要输出或者删除的环境变量。
2. source
在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。
补充说明
source命令 在当前Shell环境中从指定文件读取和执行命令,命令返回退出状态。
语法
source [文件名] [参数]
例子
读取和执行/root/.bash_profile文件。
[root@localhost ~]# source ~/.bash_profile
3. source filepath、sh filepath 与 ./filepath的区别:
-
当shell脚本具有可执行权限时,用sh filepath与./filepath是没有区别的。./filepath是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。
-
sh filepath 会重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell是新建的,其改变的变量不会被带回父shell,除非使用export。
-
source filename其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。