一.问题描述
- sh 方式执行了脚本
- 写了一个shell一键安装mysql的脚本,需要设置路径环境变量,设置完,需要重载配置文件,脚本中用到了source /etc/profile,重载配置文件命令,发现sh执行的脚本,该命令未生效。

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile
Linux环境变量配置方法: export PATH
使用export命令直接修改PATH的值,配置MySQL进入环境变量的方法:
export PATH=/home/uusama/mysql/bin:$PATH#
或者把PATH放在前面
export PATH=$PATH:/home/uusama/mysql/bin
二.问题原因
-
执行脚本时,其中的命令是在一个子shell中执行的。子shell继承了父shell的环境变量,但无法修改他们,或者说所做的修改仅对子shell有效。所以当shell脚本执行完后,到了回到shell命令行中,先前脚本中执行的source命令就没有效果了。
-
使用 bash 脚本名 方式来执行脚本,这种方式会启动一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但是执行的结果只在子shell中有效,不会返回给父shell。
三.解决办法
- 使用 source 脚本名 调用脚本
- 或者脚本外执行source /etc/profile
- 或者重启虚拟机
本文介绍了一种使用Shell脚本一键部署MySQL时遇到的问题及解决方法。主要问题在于通过sh命令执行的脚本中,使用source命令重载环境变量配置文件未能生效。文章详细解释了这一现象的原因,并提供了三种可行的解决方案。

1488

被折叠的 条评论
为什么被折叠?



