我们学习时常常需要安装相应的工具,例如MySQL安装,java环境的安装,go环境的安装等等。在其过程中常常会配置相应的环境变量。环境变量究竟是什么?我们这次进行总结学习。
环境变量
百度百科解释
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
环境变量是操作系统中的一个特殊对象,里面包含操作系统中指定的运行环境参数。我们常见的环境变量有:PATH、HOME、SHELL
- PATH 指定文件的搜索路径
- HOME 指定用户的主工作目录
- SHELL 当前使用的shell
而我们安装各种学习环境时,常常配置的是PATH环境变量,使在终端各种文件位置下都能准确、方便的使用我们所需的可执行文件。
如以下的各种命令。
mysql -u root -p
sudo mysql.server status
javac helloworld.java
g++ main.cpp
常用的PATH变量究竟是什么?
我们以运行MySQL服务可执行程序为例。
在没有配置MySQL相应的PATH变量,我们想运行MySQL服务,只能在可执行文件目录下输入命令运行服务。
MySQL默认安装在/usr/local/mysql
,mysql可执行文件在/usr/local/mysql/bin
目录下。
我们运行命令,登陆mysql。
而我们尝试在其他目录下运行mysql服务时,会得到错误command not found: mysql
。
这是因为该目录下并没有可执行文件mysql,所以无法执行mysql命令。如果总是要在指定目录下才能执行可执行文件,那么每次重启终端就需要重新进入到该目录下执行文件,无疑会导致开发效率降低。
操作系统环境变量PATH为我们提供了便捷。当我们设置了PATH变量,要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到PATH中指定的路径去找。用户通过设置环境变量,来方便地运行进程。
设立相应的环境变量PATH,就相当于为某个可执行文件在系统中设置了快捷方式,使得每一个目录下都能搜索到该可执行文件进而可以运行可执行文件。
终端与环境变量相关的命令
echo:显示某个环境变量值
export:设置一个新的环境变量
下图为用户添加MySQL相应环境变量。
env:显示所有的环境变量
环境变量的组织方式
environ变量是char **
类型,是一个字符指针数组,每个指针指向一个以’\0’
结尾的环境字符串。
使用程序输出环境变量
每个程序都会收到一张环境表,环境表是一个字符指针数组。
C语言的main函数有三个参数。
int main( int argc, char *argv[], char *envp[] )
三个参数:
- argc表示有多少个命令行参数,第一个就是执行程序名,所以argc最少为1。
- argv是具体的参数。
- envp是系统的环境变量,很少有介绍的。“名称=值”的形式,以NULL结束。
#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{
int i = 0;
for (; env[i]; ++i)
{
printf("%s\n", env[i]);
}
return 0;
}