🌏博客主页:PH_modest的博客主页
🚩当前专栏:Linux跬步积累
💌其他专栏:
🔴 每日一题
🟡 C++跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!
文章目录
环境变量
基本概念
- 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。
- 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
- 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。
- 环境变量,不是一个,而是一堆,彼此其实没有关系
- 环境变量,一般是系统内置的具有特殊用途的变量。定义变量的本质,其实就是开辟空间,在运行期间我们的程序也能开辟空间。
操作系统/bash是用C语言写的程序,它能在运行中开辟空间吗?
答:可以,系统的环境变量,本质就是系统自己开辟空间,给他名字和内容即可!
常见环境变量
- PATH: 指定命令的搜索路径。
- HOME: 指定用户的主工作目录(即用户登录到Linux系统中的默认所处目录)。
- SHELL: 当前Shell,它的值通常是/bin/bash。
查看环境变量的方法
echo $NAME
//NAME:你的环境变量名称
测试PATH
创建test.c文件
对比./test执行和直接test执行
直接执行test没有显示任何东西,而加了./之后就可以顺利执行代码,最终打印出hello world!
这是为什么呢?
因为我们执行一个可执行程序之前必须先找到它在哪里,./就是告诉系统我们要执行的程序就位于当前目录下。
那为什么ls不用加./也能直接执行呢?
因为ls的路径已经被配置到环境变量当中了,系统可以直接通过环境变量PATH来找到ls命令,查看环境变量PATH我们可以看到如下内容:
可以看到环境变量PATH当中有多条路径,这些路径由冒号隔开,当你使用ls命令的时候,系统就会查看环境变量PATH,然后默认从左到右依次在各个路径下查找。
而ls命令就处于PATH当中的某一路径下,所以就算ls命令不带路径执行,系统也是能够找到的。
那可不可以让我们自己的可执行程序也不用带路径就可以执行呢?
当然可以,有两种方法:
方法一:直接将可执行程序拷贝到环境变量PATH的某一路径下。
既然在未指定路径的情况下,系统会根据环境变量PATH当中的路径进行查找,那我们就可以将我们的可执行程序拷贝到PATH的某一路径下,此后我们的可执行程序不带路径系统也可以找到了。
[_HPH@iZbp1ezziqb3x7ubzpkn9wZ demo-8-15]$ sudo cp test /usr/bin
方法二: 将可执行程序所在的目录导入到环境变量PATH中。
将可执行程序所在的目录导入到环境变量PATH当中,这样一来,没有指定路径时,系统就会来到该目录下进行查找了。
[_HPH@iZbp1ezziqb3x7ubzpkn9wZ demo-8-15]$ export PATH=$PATH:/home/_HPH/dirforproc/ENV
测试HOME
任何一个用户在运行系统登录时都有自己的主工作目录(家目录),环境变量HOME当中即保存的改用户的主工作目录。
普通用户示例: