本文来自智谱清言
在Linux系统中,export
是一个用来设置环境变量的命令。
环境变量是操作系统运行时用于存储有关系统环境的信息的变量,它们对于用户和程序都是可访问的。下面是关于 export
命令的一些基本用法:
基本语法
bash
export NAME[=VALUE]
例子
设置一个新的环境变量:
cpp
export MY_VARIABLE="my value"
导出已经存在的变量(使其成为环境变量):
cpp
MY_VARIABLE="my value"
export MY_VARIABLE
常见用途
-
使某个变量对子进程可见: 当你在shell中设置一个变量时,默认情况下,该变量仅在该shell进程中可见。如果你想让这个变量对后续启动的子进程也可见,你需要使用
export
。 -
设置路径变量: 例如,如果你想添加一个新的路径到
PATH
环境变量,你可以这样做:
cpp
export PATH=$PATH:/new/path
- 在脚本中设置环境变量,以便它们可以在脚本外部访问: 如果你在一个shell脚本中设置了变量,并希望这些变量在脚本执行完毕后仍然对调用该脚本的shell环境有效,你需要使用
export
。
在Linux shell中,如果你设置了一个变量,那么这个变量默认情况下是局部于当前shell进程的,也就是说,如果你启动了一个新的子进程,比如运行一个命令或者脚本,这个子进程是看不到父shell中定义的局部变量的。
这里有一个简单的例子来说明这一点:
cpp
# 在父shell中设置一个变量
myvar="I am a parent variable"
# 尝试在子shell中访问这个变量
bash -c 'echo $myvar'
在这个例子中,你不会看到任何输出,因为myvar
变量没有通过export
命令导出,所以它对子shell不可见。
为了让子进程也能够访问这个变量,你需要使用export
命令:
cpp
# 在父shell中设置并导出一个变量
export myvar="I am a parent variable"
# 尝试在子shell中访问这个变量
bash -c 'echo $myvar'
这次,你会看到输出"I am a parent variable",因为myvar
已经被导出,它现在对子shell也是可见的。
请注意,使用export
导出的变量仅对当前shell及其子shell有效。如果你打开一个新的终端窗口或者登录到一个新的shell会话,之前导出的变量将不会存在,除非它们被添加到了你的启动文件(如.bashrc
或.profile
)中。
注意事项
-
export
命令设置的环境变量只在当前的shell会话中有效。如果你想永久设置环境变量,你需要将其添加到启动文件中,如~/.bashrc
或~/.profile
(取决于所使用的shell和Linux发行版)。 -
使用
export
命令不会改变已经运行进程的环境变量,它只影响在export
命令之后启动的进程。 -
如果你想要查看所有导出的环境变量,可以使用
export
命令****而不带任何参数。
export PATH = ""MY_INSTALL_DIR/bin:PATH"
在Linux中,export
命令用于设置环境变量,而 PATH
环境变量是特别重要的,因为它定义了Shell在执行命令时搜索命令的目录列表。
作用:
-
它将环境变量
PATH
的值更新为当前PATH
的值前面加上**$MY_INSTALL_DIR/bin
。这意味着$MY_INSTALL_DIR/bin
目录将被添加到搜索路径的开头**。 -
$MY_INSTALL_DIR
应该是一个已经定义的环境变量,它包含了你想要添加到PATH
的目录路径。 -
使用
:
作为路径之间的分隔符是Linux和Unix系统中的标准做法。 -
通过将
$MY_INSTALL_DIR/bin
放在现有PATH
值的前面,任何在该目录中的程序都将优先于其他目录中的同名程序被执行。
这个命令通常用于在安装了新软件或自定义脚本后,确保它们可以被Shell找到并执行。
注意 :在命令中,等号 =
两边通常不应该有空格,但在某些情况下,Shell 会忽略等号周围的空格。不过,遵循最佳实践,推荐不要在等号两边放置空格。
正确的命令应该是:
bash
export PATH="$MY_INSTALL_DIR/bin:$PATH"
如果你在命令行中直接运行这个命令,它只会对当前Shell会话有效。如果你想要这个改变在新的Shell会话中也生效,你需要将它添加到你的启动脚本中,比如 ~/.bashrc
或 ~/.profile
,这取决于你使用的Shell。