在Linux中,定义环境变量可以通过几种不同的方式来完成,其中两种常见的方式是使用 export
命令和直接赋值。这两种方法的主要区别在于它们如何影响子进程以及变量的作用范围。
-
直接赋值 (例如
name=123
):- 这种方式定义的变量仅在当前shell会话中有效。
- 如果你关闭了这个shell或打开了一个新的shell会话,那么该变量将不再可用。
- 这种方式定义的变量不会被任何由当前shell启动的子进程继承。
- 通常用于脚本内部或者临时设置某个变量。
-
使用
export
命令 (例如export name=123
或者先name=123
再export name
):- 通过
export
定义的变量不仅在当前shell会话中有效,而且还会被传递给从当前shell派生的所有子进程。 - 子进程可以访问这些导出的环境变量,但对这些变量所做的更改不会反向影响父进程中的变量。
- 使用
export
可以让变量成为全局环境变量,在整个会话期间乃至子进程中都保持其有效性。 - 这对于需要在整个系统范围内使用的配置信息特别有用,比如PATH变量等。
- 通过
简而言之,如果你希望一个变量只在当前shell环境中可见,并且不希望它被子进程所继承,你可以直接进行赋值。而当你想要创建一个能够被所有后续子进程继承的环境变量时,则应该使用 export
命令。此外,在编写脚本时,如果需要让脚本执行过程中产生的环境变量能够在调用该脚本的环境中生效,也需要使用 export
来定义这样的变量。