linux ubuntu全局变量的那些事

时间:2024-04-12 19:41:49

ubuntu全局变量配置

最近遇到了个问题,就是在普通用户下在/etc/profile中配置了全局变量,打开命令行窗口也正常使用,但是一使用sudo或者su到root用户就发现全局变量失效了。这是个什么情况?说好的全局变量呢?
linux ubuntu全局变量的那些事
上网查了一番,似懂非懂的搞明白了,在这里mark一下我自己的理解,如果说的有错误,欢迎留言指正 。

ubuntu在加载全局变量的时候,首先加载/etc/profile文件里的配置,由于/etc/profile是全局配置,所以一打开命令行窗口时,这个配置文件被首先读取。然后,再读取/etc/profile.d/文件夹下面的各个配置文件。
那么这2个有什么区别呢?可以这么理解,为了防止/etc/profile配置过多或者配置频繁更换增删导致出差错,于是有了/etc/profile.d/。在这个文件夹下你可以新建一个和自己项目相对应的配置文件,然后单独修改这个文件,即使不想用了,也可以直接把这个文件删除掉,方便得很。

但是,为什么打开命令行窗口还有全局变量,su之后就没了呢?这是因为/etc/profile是针对命令行窗口的全局变量,即无论打开多少个命令行窗口,这个文件都会被加载,但是只是针对当前命令行窗口的登录用户而言,如果切换到其他用户,这个配置文件不会再次被加载。
因此,如果想要配置全局怎么办?那么就要修改每个用户目录下的配置文件了。每个用户单独的配置文件在各自用户下的.bashrc文件内。即 ~/.bashrc。这个文件是每个用户登录的时候,都会读取用户各自的配置文件。这个才是用户意义上的全局变量,但也显然不是咱们需要的那个全局变量。

目前的方法就是在/etc/profile配置完后,修改每个用户的bashrc文件,在最后添加上source /etc/profile命令,让每个用户在读取配置的时候,自动source一下profile的配置。感觉还不是最完美的解决办法。

如果有更好的解决办法,欢迎留言交流。