JAVA环境变量可以用的,不懂就别乱说~有图有真相
Tofloor
poster avatar
smilejason
deepin
2016-01-01 01:54
Author
看到有人问环境变量不起作用,有的人回答说是配置/etc/profile的问题,常常会不起作用等等等拜托那位兄弟先去看看配置文件的启动顺序
Linux开机启动第一个执行的就是/etc/profile,配置这个文件并没有错(虽然我喜欢配置用户目录下的)
那问题在哪呢?我们打开/etc/profile看看

看到这我就明白了,这是个分支语句
if后面判断id -u的值为0 PATH就是第二行这个,通俗的讲就是root用户登录的时候第一个PATH生效
但是我们知道图形界面一般登陆的都是普通用户,所以我们应该配置的是第二个PATH
没有实践就没有发言权,咱配置了试试

注意看我配置的地方,/home/jdk/bin是我的jdk目录
好重启下看看效果

环境变量生效
Reply Favorite View the author
All Replies
refree
deepin
2016-01-01 04:39
#1
二楼先膜拜下


另外两种配置在使用上有什么具体区别?
Reply View the author
judemingzi
deepin
2016-01-01 05:16
#2
JAVA_HOME="/home/boowa/software/jdk"
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesJAVA_HOME/bin"
这样配置无效,我要把一部分提取出来应该怎么写?
Reply View the author
smilejason
deepin
2016-01-02 20:17
#3

和你登录的用户有关
你登录的是管理员用户,也就是root,第一个path生效
否则第二个path生效
Reply View the author
smilejason
deepin
2016-01-02 20:19
#4
https://bbs.deepin.org/post/35021
JAVA_HOME="/home/boowa/software/jdk"
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/game ...

$JAVA_HOME/bin
$+变量名输出的是变量的值,别忘记在前面加分隔符 :
Reply View the author
smilejason
deepin
2016-01-02 20:21
#5
https://bbs.deepin.org/post/35021
JAVA_HOME="/home/boowa/software/jdk"
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/game ...

$JAVA_HOME/bin
$+变量名输出的是变量的值,别忘记在前面加分隔符 :
Reply View the author
kingskill
deepin
2016-01-02 20:32
#6
滚进来学习。。。
Reply View the author
judemingzi
deepin
2016-01-02 20:32
#7
https://bbs.deepin.org/post/35021
$JAVA_HOME/bin
$+变量名输出的是变量的值,别忘记在前面加分隔符 :

/etc/profile
.bashrc
.profile
三个文件都试过了,只有.bashrc可以开机就可以使用java环境变量
其他两个source之后,java变量也不能给应用使用java环境变量,环境变量只有source那一次的终端能使用。。
Reply View the author
smilejason
deepin
2016-01-04 00:04
#8
https://bbs.deepin.org/post/35021
/etc/profile
.bashrc
.profile

不好意思
我一般都是在终端下工作
非登录方式加载的是.bashrc
如果你兴趣可以去了解下登录方式和非登录方式的环境变量加载机制然后自己去定制
比如你可以把.bash_profile作为符号链接指向.bashrc这样只要管理一个配置文件就好了
Reply View the author
yoqu
deepin
2016-01-04 05:56
#9
https://bbs.deepin.org/post/35021
不好意思
我一般都是在终端下工作
非登录方式加载的是.bashrc

profile文件末行直接添加处理行不通,不过按照你在开头加应该是没问题。同样是export ,是否profile文件前面进行了export 末行export不生效?
Reply View the author
deepin4king
deepin
2016-01-04 06:28
#10
本帖最后由 deepin4king 于 2016-1-3 22:30 编辑
https://bbs.deepin.org/post/35021
profile文件末行直接添加处理行不通,不过按照你在开头加应该是没问题。同样是export ,是否profile文件 ...

我都是在/etc/profile里面export path的。。。很多年了,虽然是其他系统。。。
我不相信deepin的.bashrc和~/.profile没有加载/etc/profile。。。
看楼上的几个代码片段,楼上你是不是忘了export了。。。。
Reply View the author
deepin4king
deepin
2016-01-04 06:29
#11
这是我的配置,在/etc/profile的最后
  1. export JAVA_HOME=/home/king/soft/jdk1.7.0
  2. export JRE_HOME=$JAVA_HOME/jre
  3. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

  4. export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
Copy the Code
Reply View the author
judemingzi
deepin
2016-01-04 06:54
#12
非常疑惑deepin究竟是改了什么东西,居然能够使得配置的环境变量无效。
即使source后,当前终端能够使用,那平常的ide怎么用?
研究了好久都没研究出来。有谁研究到了配置环境变量是全局有效的包括直接运行的程序,分享一下,谢谢。
Reply View the author
yoqu
deepin
2016-01-04 19:47
#13
https://bbs.deepin.org/post/35021
我都是在/etc/profile里面export path的。。。很多年了,虽然是其他系统。。。
我不相信deepin的.bashrc和 ...
  1. # /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
  2. # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

  3. if [ "`id -u`" -eq 0 ]; then
  4.   PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  5. else
  6.   PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
  7. fi
  8. export PATH

  9. if [ "$PS1" ]; then
  10.   if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
  11.     # The file bash.bashrc already sets the default PS1.
  12.     # PS1='\h:\w\$ '
  13.     if [ -f /etc/bash.bashrc ]; then
  14.       . /etc/bash.bashrc
  15.     fi
  16.   else
  17.     if [ "`id -u`" -eq 0 ]; then
  18.       PS1='# '
  19.     else
  20.       PS1='$ '
  21.     fi
  22.   fi
  23. fi

  24. if [ -d /etc/profile.d ]; then
  25.   for i in /etc/profile.d/*.sh; do
  26.     if [ -r $i ]; then
  27.       . $i
  28.     fi
  29.   done
  30.   unset i
  31. fi
  32. #JDK PATH
  33. export JAVA_HOME=/usr/jdk1.8.0_11
  34. export JRE_HOME=/usr/jdk1.8.0_11/jre
  35. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
  36. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
Copy the Code


整个文件是这样的。我在末行这样加。之前的ubuntu没有问题,在deepin上就重启不生效
Reply View the author
deepin4king
deepin
2016-01-04 20:23
#14
https://bbs.deepin.org/post/35021
整个文件是这样的。我在末行这样加。之前的ubuntu没有问题,在deepin上就重启不生效 ...

“重启不生效”的时候有没有查看环境变量?直接运行export就可以输出所有环境变量的
Reply View the author
yoqu
deepin
2016-01-05 01:38
#15
https://bbs.deepin.org/post/35021
“重启不生效”的时候有没有查看环境变量?直接运行export就可以输出所有环境变量的 ...

查看了的
使用命令
echo $PATH
输出没有包括jdk,只有source之后PATH变量才含有jdk路径.
Reply View the author
deepin4king
deepin
2016-01-05 01:51
#16
亲自试了下,按照我上面贴出的 那几行配置,然后没做其他任何修改,OK
重启后一样ok。。。。
Reply View the author
zhang12345shun
deepin
2016-01-17 09:09
#17
1. 下载Sun版JDK压缩包(.tar.gz),选择其中的32/64位Linux版本。
2. 将其解压缩:sudo tar -zxvf ~/Downloads/jdk-8u45-linux-i586.tar.gz -C /usr/lib 中参数-C后面的路径是解压缩的目标路径。
3.sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_66/bin/java 1000
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_66/bin/javac 1000
Reply View the author
zhang12345shun
deepin
2016-01-17 09:41
#18
参考官网:
Starting with version 8u40, the JDK installation is integrated with the alternatives framework and after installation, the alternatives framework is updated to reflect the binaries from the recently installed JDK. Java commands such as java, javac, javadoc, and javap can be invoked from the command line.
Reply View the author