shell脚本环境变量.bashrc配置实践
作者:禾三几
本文介绍了Linux中的环境变量配置方法,包括/etc/profile和~/.bashrc,作者强调了bash脚本环境变量的重要性,并提出了三种解决方法:在脚本中加入环境变量、配置~/.bashrc和将/etc/profile加入~/.bashrc
shell脚本环境变量.bashrc配置
1.首先关于 Linux中的环境变量配置不只有’/etc/profile’,还有
‘/etc/profile.d/*.sh' ‘~/.bash_profile' ‘~/.bashrc' ‘/etc/bashrc'
等
2.显然带有bash的一般跟我们编写脚本有关
3.问题来了:当我们编写完脚本启动时会报找不到相关变量的错误
例如:
下面是一个zookeeper的集群启动关闭脚本案例
#! /bin/bash
case $1 in
"start"){
for i in hadoop101 hadoop102 hadoop103
do
ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
done
};;
"stop"){
for i in hadoop101 hadoop102 hadoop103
do
ssh $i "/opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done
};;
esac
当我们执行之后,发现zk并没有启动,查看日志之后发现报错是拒绝连接,或者只有一行文字:找不到java。
这就是bash脚本的环境变量没有配置,但是我们已经在’/etc/profile’中配置好了相关环境变量,这是因为ssh登录不会自动 source环境变量
此时解决问题的方法有三:
方法一
改写脚本,加入环境变量
#! /bin/bash
case $1 in
"start"){
for i in hadoop101 hadoop102 hadoop103
do
ssh $i "source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh start"
done
};;
"stop"){
for i in hadoop101 hadoop102 hadoop103
do
ssh $i "source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh stop"
done
};;
esac
方法二
配置’~/.bashrc’(当每次执行脚本时都会加载此文件)
./bashrc为隐藏文件
在家目录下直接打开

此时,我们需要哪些环境变量就可以直接添加到此文件后面就可以了

然后分发其他节点,最后别忘了source ./bashrc
方法三
此方法和方法二类似,我们依旧打开./bashrc文件
由于我们已经将相关环境变量配置到了‘/etc/profile’文件中,
所以此时将‘/etc/profile’加入到./bashrc文件中就可以了

分发其他节点,分别source /home/用户名/.bashrc
此时脚本环境变量就解决好了
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
