1、查看环境变量
Linux 发行版具有环境变量和 shell 变量,它们的功能类似,但作用域不同。
要列出 Linux 中的所有环境变量,运行printenv命令。
在流行的 Linux 发行版中,一些最常见的环境变量包括:
PWD – 当前工作目录。
USER – 当前登录的用户帐户。
SHELL – 当前用户的 shell 位置。
HOME – 用户的主目录。
EDITOR – 系统默认的文件编辑器。
PATH – 所有系统可执行文件的位置。
2、打印单个环境变量
使用echo命令打印单个环境变量值。语法如下:
echo $CXX
3、设置临时环境变量
使用export命令可以在Linux操作系统中临时设置全局环境变量。
以下是语法:
export HOME="/etc/another/path"
请记住,此命令仅将新的全局变量应用于当前环境。此外,这些更改将在重新启动系统后重置。
4、设置永久环境变量
修改特定于 shell 的配置文件以使环境变量持久化。但是,要编辑的文件取决于您是要更改用户特定配置还是系统范围配置。
(1)用户特定的环境变量
编辑~/.bashrc以仅为当前用户设置永久环境变量。为此,请使用nano等文本编辑器打开它:
sudo nano ~/.bashrc
在文件的开头或底部添加键值对,可以更好地组织。以下是语法:
export VAR="VALUE"
按Ctrl+X、Y和Enter键关闭nano并保存更改。使用以下命令刷新当前shell会话以应用新配置:
source ~/.bashrc
如果要为登录shell设置变量,请修改~/.profile文件,而不是~/.bashrc。请注意,您也可以通过~修改shell函数/bashrc文件。
(2)系统范围的环境变量
要设置适用于操作系统中所有用户的永久环境变量,请使用文本编辑器编辑/etc/environment文件:
sudo nano /etc/environment
使用基本语法将键值对添加到文件中,无需导出:
VAR="VALUE"
保存文件并关闭nano。要应用更改,请重新登录当前用户或使用reboot命令重新启动系统。每当您进入bash登录shell时,配置就会加载。
除了/etc/environment文件之外,还可以将环境变量添加到/etc/profile.d目录中。要执行此操作,请使用以下命令导航到文件夹:
sudo cd /etc/profile.d
使用nano文本编辑器创建一个新的shell脚本文件来存储新的全局变量:
sudo nano global_env.sh
将global_env替换为您想要的名称,最好是描述性名称,以简化标识。在nano中,使用以下语法编写环境变量:
export VAR="VALUE"
保存更改并关闭文本编辑器。重新启动系统,将设置应用于bash shell。如果运行printenv命令,新配置应该显示在Linux环境变量列表中。
6、删除环境变量
使用unset命令删除 Linux 中的环境变量。语法如下:
unset VAR
unset命令删除是临时的,系统重新启动后环境变量还是会恢复的。要永久删除环境变量,请使用文本编辑器打开~/.bashrc或/etc/environment配置文件。删除相应的行并保存更改。
但是通常建议在字符串开头添加井号 ( # ) 以将其停用,而不是删除。
7、开发中的Linux环境变量
环境变量可让您轻松设置代码库的不同区域来存储应用程序的敏感信息。它有助于提高安全性,因为管理员可以限制特定用户的访问权限。
此外,在shell脚本中使用环境变量有助于简化自动部署过程。无需在每个.sh文件中手动写入 API URL 等信息,只需导出它们即可应用该值。
此外,它还简化了应用程序管理和开发,因为您不需要频繁修改代码库。例如,我们设置两个不同的API URL作为环境变量:
export PYAPP_ENV="TEST"
export PYAPP_TEST_API="https://api.domain.tld/"
export PYAPP_DEPLOY_API="https://api2.domain.tld/"
我们将PYAPP_ENV环境变量调用到应用程序的代码库中。在部署过程中,我们可以应用PYAPP_DEPLOY_API将其值临时更改为DEPLOY。
8、示例
假设系统里面已经安装了gcc,那么环境变量如何指定CXX?
假设当您已经安装了GCC 7.3 时,要指定 C++ 编译器 ( CXX) 环境变量,您需要将该变量设置为所需 C++ 编译器的路径。
在这种情况下,您需要将其设置为g++-7.3编译器可执行文件的路径,该路径通常与 GCC 7.3 关联。
临时设置CXX变量: CXX要为单个命令或短会话临时设置变量,您可以export在终端中使用该命令。
例如,要将CXX变量设置给/usr/bin/g++-7.3编译器,您可以使用:
export CXX=/usr/bin/g++-7.3