一次性搞明白!——source /etc/profile命令在shell脚本中执行不生效的原因

时间:2025-02-23 09:42:32

目录

问题描述

问题原因

解决:


问题描述

  • 一次写自动化安装脚本,要安装java,需要将JAVA_HOME写到/etc/profile中,然后在脚本中使用source /etc/profile命令,但是发现profile文件中确实有JAVA_HOME。但是使用source /etc/profile命令好像没其作用。使用java相关命令,提示没有找到该命令,于是手动source /etc/profile一下后发现可以使用java相关命令了。
  • 查了下资料,知道了原因,记录分享一下。
[root@tq-rocketmq-master rocketmq-all-4.6.1]# java
bash: java: command not found

问题原因

 

  • 使用 bash 脚本名 方式来执行脚本,这种方式会启动一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但是执行的结果只在子shell中有效,不会返回给父shell

解决:

  • 解决方法:使用 source 脚本名 来调用脚本即可