shell_脚本中使用source /etc/profile 重载配置文件不能生效的原因

本文介绍了一种使用Shell脚本一键部署MySQL时遇到的问题及解决方法。主要问题在于通过sh命令执行的脚本中,使用source命令重载环境变量配置文件未能生效。文章详细解释了这一现象的原因,并提供了三种可行的解决方案。

一.问题描述

shell_一键部署mysql脚本

  • 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
  • 或者重启虚拟机
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值