一、登陆式 Shell 和 非登陆式 Shell
首先要了解,什么是登陆式 Shell 和非登陆式 Shell
- 登陆式 Shell:采用用户名密码登陆,例如:在 Hadoop102 上用 lpy 用户登陆
- 非登录式 Shell:采用 ssh 登陆,例如:在 hadoop102 上输入命令:ssh hadoop103 登陆 hadoop103
二、Linux 环境变量
/etc/profile 文件:用来设置系统环境参数,比如 $PATH. 这里面的环境变量是对系统内所有用户生效。使用 bash 命令,需要source /etc/profile 一下。
~/.bashrc文件:针对某一个特定的用户,环境变量的设置只对该用户自己有效。使用bash命令,只要以该用户身份运行命令行就会读取该文件。
注意:
- 登陆式 Shell:会自动加载 /etc/profile
- 非登陆式 Shell:不会自动加载/etc/profile,会自动加载~/.bashrc
- cd 到根目录,然后输入:ls -al 即可找到 .bashrc 文件
.bashrc 文件内容如下:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
里面是一个 if 判断语句,意思是如果 /etc/bashrc 是个文件,则执行这个文件
/etc/bashrc 文件部分内容如下:
... ...
... ...
... ...
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. "$i"
else
. "$i" >/dev/null 2>&1
fi
fi
done
文件内容很多,我们只需要看最后这一段即可,这里是个 for 循环遍历了一下 /etc/profile.d/ 文件夹下的所有带 .sh 后缀的文件,然后对每个文件进行相应的执行。
意思就是: /etc/profile.d/ 文件夹下所有有读权限的 .sh 后缀的文件都会执行
三、环境变量配置方案
- 在 /etc/prodile.d/ 目录下新建一个 env.sh(名字自己取,但必须带.sh后缀),然后把环境变量添加进去即可,例如:
#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_144 export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
- 如果非要在/etc/profile里配置环境变量,那就把每个节点 /etc/profile 里面的环境变量追加到 ~/.bashrc 目录:cat /etc/profile >> ~/.bashrc