Linux中通过命令执行Shell脚本不生效问题

Linux中通过命令执行Shell脚本不生效问题

文章目录

  • Linux中通过命令执行Shell脚本不生效问题
  • [1. 执行.sh设置export不生效问题](#1. 执行.sh设置export不生效问题)
  • [2. 可能导致的原因](#2. 可能导致的原因)
  • [3. 解决方法](#3. 解决方法)
    • [1. 通过点(.)来执行shell脚本](#1. 通过点(.)来执行shell脚本)
    • [2. 通过source来执行shell脚本](#2. 通过source来执行shell脚本)

1. 执行.sh设置export不生效问题

执行命令./script.sh后发现不生效

  1. script.sh
shell 复制代码
#!/bin/bash
export LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME="@2023-12-25 00:01:00" FAKETIME_DONT_RESET=1 FAKETIME_NO_CACHE=1
  1. 通过./script.sh执行发现不生效
shell 复制代码
echo "exec finshed"
[root@ea483ffabfe8 app]# ./script.sh 
exec finshed
[root@ea483ffabfe8 app]# date
Fri Apr 26 16:45:18 CST 2024

2. 可能导致的原因

如果执行 .sh 脚本设置 export 环境变量后,发现环境变量并没有生效,可能有几个原因导致这种情况:

  1. 脚本没有被正确执行: 确保脚本文件有可执行权限,并且使用正确的命令执行脚本。

  2. 脚本中有错误: 检查脚本文件是否有语法错误或逻辑错误,确保 export 命令被正确使用。

  3. 脚本被以子进程方式执行: 如果你是通过在当前 shell 中执行脚本(例如 ./script.sh),那么脚本中设置的环境变量只会影响子进程。可以通过使用 source 命令或 .(点号)来在当前 shell 中执行脚本,以确保环境变量在当前 shell 中生效。

  4. 环境变量被覆盖: 如果脚本中设置的环境变量与当前环境中已存在的变量同名,那么脚本中的设置可能会被当前环境中的变量覆盖。可以在执行脚本前打印当前环境中的变量,以确认是否存在同名的变量。

  5. 脚本被执行在另一个 shell 中: 如果你是通过其他方式执行脚本(例如在新的 shell 中执行),那么脚本设置的环境变量可能只会在该 shell 中生效,而不会影响到其他 shell。

3. 解决方法

通过排查以上可能的原因,你应该能够解决脚本设置 export 环境变量不生效的问题。

最终解决方法:执行source script.sh. script.sh

1. 通过点(.)来执行shell脚本

shell 复制代码
# 执行 . script.sh
[root@ea483ffabfe8 app]# date
Fri Apr 26 16:57:52 CST 2024
[root@ea483ffabfe8 app]# . script.sh 
exec finshed
Fri Apr 26 16:57:52 CST 2024

2. 通过source来执行shell脚本

shell 复制代码
# 执行 source script.sh

[root@ea483ffabfe8 app]# export LD_PRELOAD=
[root@ea483ffabfe8 app]# date
Fri Apr 26 17:04:16 CST 2024
[root@ea483ffabfe8 app]# date
Fri Apr 26 17:04:18 CST 2024
[root@ea483ffabfe8 app]# date
Fri Apr 26 17:04:20 CST 2024
[root@ea483ffabfe8 app]# source script.sh 
exec finshed
[root@ea483ffabfe8 app]# date
Mon Dec 25 00:01:00 CST 2023
[root@ea483ffabfe8 app]#
相关推荐
韩楚风3 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学3 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO3 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu73 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我3 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、3 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程3 小时前
Linux中环境变量
linux
挥剑决浮云 -4 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记
小O_好好学5 小时前
CentOS 7文件系统
linux·运维·centos
x晕x6 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器