为啥环境变量写入到/etc/profile里面了,也source了,怎么就是不生效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥环境变量写入到/etc/profile里面了,也source了,怎么就是不生效相关的知识,希望对你有一定的参考价值。

source之后直接echo打印可以用,但是运行脚本的时候又不加载了

假设你的用户为A, 登录系统时也登录为A, 则此时/etc/profile 里面的环境变量直接应用到A用户,
然后打开命令行, 你就可以通过 echo $变量名 (不需要花括号)查到你想要的变量名 (包括/etc/profile 和 /home/A/.bashrc 里面设置的;
之后sudo su, 登录为root用户, 这个时候/etc/profile的环境变量是不会自动加载的(因为没经历过开机那段时间的一部分黑箱操作), 那这个时候你只能echo到/home/root/.bashrc里面的变量.
然后说运行脚本, 你要确保的是当前用户和你脚本的所有者是同一个(同为A 或同为root), 否则需要chmod xxx 脚本名( xxx代表权限程度, 具体改成多少我不懂, 所以都改成放权程度最高的 777), 才能使脚本被不同的用户调用, 然后就是要关注当前用户下的.bashrc里面是否有目标变量名, 没有的话就往相应用户的.bashrc里面添加. 如果当前用户是开机登陆的用户(就是看有没有自动加载过/etc/profile),那直接就有目标变量
参考技术A 这个需要重启才能生效,如果用source,每次开bash都要source一下。
如果修改的是/home/用户名/.bash_profile,这个应该是能立即生效的,每次开bash都会自动载入一遍变量
参考技术B 设置永久环境变量

1.环境变量配置中,要先删除.bash_profile中的三行关于.bashrc的 定义,然后把环境变量配置在.bashrc中
2.选择要使用的java环境:update-alternatives –config java
3.要使得刚修改的环境变量生效:source .bashrc
4.查看环境变量:env
参考技术C echo <变量名>

就可以查看到底有没有生效,比如:

echo  $path

参考技术D 想问一下,您是怎么解决的

以上是关于为啥环境变量写入到/etc/profile里面了,也source了,怎么就是不生效的主要内容,如果未能解决你的问题,请参考以下文章

Linux 环境下/etc/profile和/etc/profile.d 的区别和用法呢?

ubuntu18每次启动linux都要source /etc/profile生效java环境变量

linux的etc/profile文件的作用是啥

求助RHEL7/CENTOS7下,在/etc/profile里面设置环境变量不生效问题

Linux下用GCC程序修改/etc/profile文件环境变量的问题

source /etc/profile 是啥意思?这个命令不写又能怎么样?