凭什么,为什么每次登录要手动 source /etc/profile,一定是有问题的

学艺不精,多难受啊

特别生气,特别难受。。。
linux技能并不咋样,所以一般都是百度来安软件的
JDK以及MAVEN环境也是这样的。

环境变量的问题

今天遇到个问题就是每次必须登录 source /etc/profile 才能使java -version命令有效.
但是 /etc/profile 是每次登录自动加载的啊(这个一定是对的),而我在里面写了java的环境变量,为什么呢?
我登录之后马上打印 $PATH ,嗯确实没有jdk的环境变量,那么到底去哪里了呢?

解决问题ing

我们来看看执行的顺序:
1./etc/profile
2./etc/environment
3.~/.bash_profile
4.~/.bashrc
5./etc/bashrc
我在 1的末尾打印了个 echo $PATH ,有JDK的环境变量
删除上一步的echo,在3的末尾打了个echo $PATH ,无JDK的环境变量
删除上一步的echo,在3的开头打了个echo $PATH ,有JDK的环境变量
观看3的源码
在这里插入图片描述
不难看出由3进入了4,而在3的开头环境变量依然有JDK,结尾没有,则问题一定出在了4中
看看4的源码
在这里插入图片描述
那么我们能看出4调用了5,那么问题在5(/etc/bashrc)
我在5的结尾发现了一条奇怪的东西

	export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/git/bin:/root/bin

解决问题OVER

正是这步直接指定了环境变量,而且里面并没有JDK
???这是什么操作,而且这个决不是我写的。
想了想。我安装了git,当时那些操作到底具体操作了什么,我也不知道。
多半是GIT安装编译的时候,自动在/etc/bashrc里面添加了这条命令(应该是安装的时候根据当时的环境变量自动生成的一条去命令),而这条命令并没有jdk的环境变量,让我好生郁闷。

删了它吧?
把它改成 export PATH=$PATH:/usr/local/git/bin吧
编译时用当时即时的PATH值替换了动态$PATH导致这一系列问题

完美解决

感悟

授之以鱼不如授之以渔
那么买鱼不如学学怎么捕鱼,万一有一天渔民不捕鱼了呢?
不恰当的比喻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章