Ubuntu: 环境变量总结

之前和小伙伴一起聊天,之前python不怎么会碰到的问题,到了C++上,会碰到三个特别常见而且比较头疼的问题,不知道小伙伴看到会不会深有感触呢?

  1. cannot find系列,明明自己库就在那里,写Makefile或者CMakelists.txt的时候,愣是找不到对应的库文件

  2. segment fault系列,编译通过,满心欢喜,结果程序运行,segment fault这个一般都是越界之类的问题偏多

  3. core dump系列,这个有的是指针释放等一些问题,但是具体问题得具体分析,不能一竿子打死,不然也不会有的时候找找个bug得三四天。

今天其实就是针对第一个问题对ubuntu系统变量总一个总结,LZ自己也想好好梳理一下。

首先,我们需要查看环境变量,环境变量分为局部环境变量和全局环境变量,一般就考虑全局环境变量,默认都是大写的,那我们要怎么查看呢?

使用env,或者printenv,可以得到如下的输出:
在这里插入图片描述如果指定想要查看指定的环境变量,可以添加对应的变量名,如下:

printenv HOME

在这里插入图片描述
可以看到LZ的HOME变量是/home/felaim

如果用户不同的话,会对应不同的目录,而且在不同的用户下,这个变量是会变的,这点很重要,因为会遇到有些问题,比如在A用户下可以完美运行代码,在B用户下各种cannot find的问题。

一次性添加环境变量
在这里插入图片描述
先检查一下不存在FELAIM这个环境变量,通过对FELAIM赋值,通过export写入环境变量,删除环境变量,则使用unset命令,这个是对新变量赋值,如果是原来已经有的环境变量,我们该怎么添加呢?
在这里插入图片描述例如我们最常使用的PATH设置

在这里插入图片描述
可以看到正常如果PATH中有多个值,是使用“:”作为分隔的,windows设置环境变量一般使用“;”作为分隔的。

那么我们就需要这样设置:

export PATH=/home/Felaim/Music:$PATH
or 

export PATH=$PATH:/home/Felaim/Music

检查一下:
在这里插入图片描述但是这个设置只在这个终端中有效,如果LZ打开一个新的终端:

在这里插入图片描述
发现Music又不在PATH中了,这也就是为什么写完makefile工程后,经常要写个配套的sh文件,里面经常包含export指令,来进行一次行增加系统环境变量,不然每次输还是很慢的,有些永久写到环境变量里,有会出现冲突的问题,所以比较安全的方式就是上述方式。

永久设置环境变量的方法:

修改/etc/profile
/etc/profile文件就是系统默认的bash shell的第一启动文件.其中就涉及到了系统环境变量的读取文件.所以,可以直接打开/etc/profile文件,使用export命令在文件中添加系统环境变量.

这个文件的特点是:系统中所有用户登录时都会执行这个启动文件.所以,里面添加的所有环境变量都系统中的所有用户有效. 通常个人电脑不会存在多个用户,但是服务器就会存在多个用户,如果修改/etc/profile就还是要考虑一下。。。

sudo gedit /etc/profile
export PATH=/home/felaim/Music:$PATH
source /etc/profile

有的时候source后并不会生效,要重新启动系统才能使得其生效,所以如果使用服务器,可能会麻烦管理员重启机器

修改/etc/environment
在这里插入图片描述发现只有一行代码,因为/etc/environment文件是登录Linux系统时的第二启动文件,所以所有登录用户有效.也可以按照上述方式增加环境变量,然后通过source或者重启系统使得增加的环境变量生效。

只对登录用户生效的环境变量设置:
通常是修改~/.bashrc和~/.profile,从文件路径我们就可以发现“~”,表示的是HOME路径,那么不同的用户,HOME是不同的,虽然表示方式相同,但其实是不同的文件。

我们可以看到~/.bashrc文件内容:
在这里插入图片描述可以看到这个文件也是运行~/.bashrc这个文件的,所以我们一般修改~/.bashrc这个文件就可以了。
在这里插入图片描述

可以看到~/.bashrc内容就丰富多了,一般修改就在这个位置修改就可以了。

当然修改完了,别忘了source一下或者重启下系统。

这下小伙伴们应该对Ubuntu系统环境的设置有了一定的了解了,当然LZ也是好好的梳理了一遍!

参考地址:
1.https://hackprogramming.com/2-ways-to-permanently-set-path-variable-in-ubuntu/

2.https://www.jianshu.com/p/12fbfa8c7489

发布了300 篇原创文章 · 获赞 203 · 访问量 59万+

猜你喜欢

转载自blog.csdn.net/Felaim/article/details/103381421