1、Linux环境中Java环境没配置
所使用的的Linux的java任然是系统自带的java版本,更多细节自行百度;
2、Linux环境变量配置文件的问题
通常我们在安装java的时候,所配置的环境大多都是配置/etc/profile文件,但问题是Linux的环境变量可以配置在多个文件,如/etc/profile, /etc/profile.d/*.sh, ~/.bashrc 等。
下面说明上述几个文件之间的关系和区别:
- bash 的运行模式可分为 login shell 和 non-login shell。
例如, 我们通过终端,输入用户名、密码,登录系统之后,得到就是一个 login shell,而当我们执行以下命令 ssh hadoop103 command,在 hadoop103 执行 command 的就是一个non-login shell。 - 这两种 shell 的主要区别在于,它们启动时会加载不同的配置文件, login shell 启动时会加载/etc/profile, non-login shell 启动时会加载~/.bashrc。而在加载 ~/.bashrc(实际是 ~/.bashrc 中加载的/etc/bashrc) 或/etc/profile 时, 都会执行如下代码:
因此不管是 login shell 还是 non-login shell, 启动时都会加载/etc/profile.d/*.sh 中的环境变量。 - 但问题是我们配置java时候的/etc/profile文件,并不会在non-login shell时候被加载,所以在执行脚本的远程命令的时候不会加载non-login shell,也自然就会出现bash:java:command not found问题;
综上所述,解决第二种问题的方式就是自己再配置一个/etc/profile.d/*.sh文件,将我们的Java环境变量配置到这个文件中。(我自己是配置一个/etc/profile.d/my_env.sh文件)。