通常我们在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用于Ubuntu默认是不以root用户登录的,这时echo $PATH可以看到JAVA_HOME已经被设置好了,java命令也可以执行。接下来su root,再输入java命令提示找不到java命令,$PATH中也找不到JAVA_HOME这个路径了。
之后看了一篇博客尝试切换用户的时候用了su - root命令,这时又可以找到JAVA_HOME这个变量了。
查了资料才明白,这两个命令的差别:su是切换用户存取权限,但是没有获得环境变量,所以PATH没有被带入;su -是完全的切换用户,可以获得环境变量,所以可以找到JAVA_HOME。
因此建议在切换用户的时候,尽量 su - user,否则容易出现一些因为环境上的问题。