Linux系统中的export命令该如何理解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统中的export命令该如何理解?相关的知识,希望对你有一定的参考价值。

Linux系统中的export命令在命令帮助手册上有这样的描述:export的效力仅及于该此登陆操作。请问这句话该如何理解?希望能解释的清楚一点,最好能举个小例子。

export用于声明一个环境变量:
export variable=value

该环境变量只在本进程和其子进程中可以访问。

如果是在系统级的配置文件中,如/etc/profile中export 一个变量,那么这个变量就会在整个系统运行期间都起作用。
如果在用户级~/.bash_profile之类的文件中,则每次启动shell都会去读这个文件,所以每次打开shell也是可以取到这个值的。
如果在某一次运行中,手动export一个变量,则只在这次shell的使用中,才能访问这个变量,或者在该shell启动的其他程序中,也是可以访问这个变量的,因为它们是这个shell的子进程。

linux的桌面程序,是不读取个人目录下的~/.bash_profile等配置文件的,因此这些export的变量对用户桌面程序是没有意义的。

你说的登录,指的是shell的生命周期。
参考技术A 没看懂这个中文解释,manpage显示:
Set an environment variable. Mark each name to be passed to child processes in the environment.
就是说export是甚至环境变量的,这是一个全局变量.比如我想设置系统语言是英文:
$export LANG=C
参考技术B Linux export命令
功能说明:设置或显示环境变量。
语 法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登录操作。
参 数:
-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中有效。

以上是关于Linux系统中的export命令该如何理解?的主要内容,如果未能解决你的问题,请参考以下文章

Linux怎么设置系统环境变量之export命令详解

Linux 命令详解export 命令

Linux中的取消设置命令不会清除变量

Linux添加系统环境变量

shell编程之export

bash中的export命令