设置环境变量的方式:(三种)
Linux中通常来说设置环境变量分为三种:临时设置环境变量(只在当前用户的当前终端会话中有效),将环境变量添加到 Shell 启动文件(对当前用户有效),将环境变量设置在系统级别(对所有用户生效)。
设置临时环境变量
这是最简单的一种方式,这样设置的环境变量仅在当前终端会话有效。可以通过 echo $VAR_NAME
查看已设置的环境变量。
特点:
临时有效:变量仅在当前终端会话中有效,关闭终端或退出登录后失效。简单方便:适合一次性临时调整环境的场合。覆盖原有的环境变量(不用:)
export PATH=/usr/local/bin
作用:完全覆盖现有的 PATH
变量值,只设置为 /usr/local/bin
。
解释:此命令会移除之前 PATH
中所有的其他路径,仅将 /usr/local/bin
设为新的 PATH
值。也就是说,之后系统只会在 /usr/local/bin
目录中查找可执行文件。
使用时要小心:由于采用这种方式设置可能会覆盖之前的环境变量,所以使用的时候应该检查一下环境变量里面内容,内容为空或者确定里面环境变量没用才可覆盖。
在原有环境变量中增加路径选项(使用:)
export PATH=$PATH:/usr/local/bin
作用:在当前的 PATH
变量值基础上,追加 /usr/local/bin
目录。
解释:这里的 $PATH
表示当前已有的 PATH
值,命令将 /usr/local/bin
添加到 PATH
变量的末尾,同时保留了原有的路径设置。
$PATH
是一个 引用当前环境变量 PATH
的用法。PATH
是一个环境变量,包含了一系列目录的路径,当你在终端中输入一个命令时,Linux 系统会按照 PATH
环境变量中列出的目录顺序,查找这个命令的可执行文件。通过 $PATH
,你可以引用或获取 PATH
的当前值。
环境变量引用优化:为了确保变量名的边界清晰,以避免与其他字符混淆,我们还可以使用{}来将引用的变量括起来。比如:export THIRDPART_PATH=${DDK_PATH}/thirdpart。
采用覆盖/追加设置环境变量的时候,都可以引用环境变量来构建新的环境变量,不仅可以引用自身环境变量也可以引用其他环境变量。
追加环境变量时的顺序
:
是路径分隔符,表示多个路径可以同时存在,系统会按顺序查找这些路径。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/new/path
这里表示在已有的 LD_LIBRARY_PATH
值后面追加 /new/path
。如果原来的 LD_LIBRARY_PATH
变量已经包含了一些路径,那么 /new/path
会被追加到末尾。例如:如果 LD_LIBRARY_PATH
最初的值是 /usr/lib
,执行该命令后它会变成 /usr/lib:/new/path
。 export LD_LIBRARY_PATH=/new/path:$LD_LIBRARY_PATH
/new/path
是你想要添加的新的路径。$LD_LIBRARY_PATH
表示当前 LD_LIBRARY_PATH
的值,包含之前已经设置的路径。:
是路径分隔符,用来连接多个路径。这条命令将 /new/path
放在最前面,表示在查找库文件时,系统会优先在 /new/path
目录下查找动态库,然后再按顺序查找 LD_LIBRARY_PATH
中其他已有的路径。 设置长期环境变量到 Shell 启动文件
Bash启动文件介绍
如果我们需要长期使用这个环境变量,最好是将环境变量写入到Shell 启动文件中更加方便。Shell 是一个 命令行解释器,在用户输入命令执行程序的时候都会用到它,它的作用是:将用户在终端输入的命令翻译为操作系统可以理解和执行的操作。在我们linux中最常见的Shell应该就是bash了。所以要想使得环境变量在当前用户长期有效,我们应该将环境变量添加到bash启动文件中。
Bash 是常见的 Shell 之一,它有两种类型的启动:登录 Shell 和 非登录 Shell。两种方式登录Bash对应着启动不同种类的文件
登录Shell
登录 Shell 是指用户通过终端登录(例如输入用户名和密码),或者通过ssh远程登录进入的 Shell 会话。登录 Shell 启动时会读取以下文件:
系统范围的文件:
/etc/profile
:系统范围的全局配置文件,适用于所有用户。它会在每次用户登录时读取。 用户范围的文件:
~/.bash_profile
:用户个人的 Bash 登录 Shell 配置文件。最常用于设置环境变量和启动脚本。~/.bash_login
:如果找不到 .bash_profile
,则会读取该文件。~/.profile
:如果 .bash_profile
和 .bash_login
都不存在,则会读取 .profile
。常见做法: 登录 Shell 通常会在 .bash_profile
中包含 .bashrc
,这样无论是登录 Shell 还是非登录 Shell,都会执行 .bashrc
,保证配置一致。 非登录 Shell
非登录 Shell 是指用户直接打开一个终端窗口的 Shell,而不需要登录。例如在桌面环境中打开终端窗口,或者运行一个脚本。这种情况下,Bash 会读取以下文件:
~/.bashrc
:这是非登录 Shell 主要使用的启动文件。一般会在这里设置环境变量(长期),别名、函数、命令提示符等个性化配置。 注意:
我们可以通过命令行输入echo $0命令,查看输出结果来判断当前的bash终端是登录Shell还是非登录Shell。如果输出的是类似于-bash
,那说明是登录 Shell。如果输出的是类似于bash
,没有-,那说明是登录 Shell。我们平时其实并不需要很关心究竟通过登录Shell/非登录Shell启动的bash。由于这两种方式都会加载.bashrc
文件,(.bash_profile
中包含 .bashrc
)所以为了保证我们运行程序时环境一致,通常会选择将环境变量写入到.bashrc文件。
环境变量写入到~/.bashrc
的方法
首先我们来看文件:~/.bashrc的名字,可以发现
这是一个隐藏文件,并且处在我们的家目录下(~表示的就是当前用户的家目录),也说明了写入到~/.bashrc
文件的环境变量仅仅对当前用户有效。
1. 打开~/.bashrc文件
vim ~/.bashrc
2. 找到文件末尾(一般做法),或者在文件中任何适合的位置,添加你想要的环境变量。
export PATH="$PATH:/new/path/directory"
这里将路径用""包起来了,主要是让明确让这个路径是一个整体,万一路径中出现了空格的话就会被认为是两部分导致出错,加上""更加保险。这里export环境变量和上面设置临时环境变量的语法一样,都是可以选择增加方式也可以选择覆盖。 3. 让修改立即生效:
source ~/.bashrc
这会重新加载 ~/.bashrc
文件,所有新添加的环境变量将立即生效。当然你也可以选择关闭当前终端,然后再次打开也会生效。
最后,可以通过命令echo $PATH来查看检验设置的这个环境变量是否生效。
将环境变量设置在系统级别
之后详细聊这里吧,因为平时我们也用不到这里,常见的做法是将环境变量设置在用户级别,我们很少需要将环境变量设置到整个系统(所有用户)。
查看环境变量
使用echo命令:
echo
是最简单的方法,它会直接输出当前环境变量的值
echo $LD_LIBRARY_PATH
使用printenv命令:
printenv 可以显示所有环境变量或特定环境变量的值
printenv LD_LIBRARY_PATH
这将只输出 LD_LIBRARY_PATH 变量的值。如果你想查看所有环境变量,可以不加参数:
printenv
使用echo和printenv命令查看到的环境变量包括临时的,用户的以及系统的。如果我们想要单独查看系统级别的,可以vim打开/cat对应的文件来查看(比如查看~/.bashrc文件)。