在shell脚本设置了环境变量,如export LIBRARY_PATH=./lib/,执行了此脚本后, 在执行生成的可执行文件,提示错误

error while loading shared libraries: libww.so: cannot open shared object file: No such file or directory

但是如果把export那句话单独在命令行运行,在gcc编译代码后不会出现问题

怎么也想不通,为什么脚本执行了,设置了环境变量,但是运行可执行文件总是失败。

查看大牛博客,终于发现

原因是执行脚本用./test.sh的方式,如果采用source test.sh,则环境变量会生效。

./XXX.sh的时候,脚本里面打印PATH是改了,但是在终端echo $PATH却没有看到变化,因为这样执行等于说不在当前进程

那么。这是为什么呢?

关键:直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的。

1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;
2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量)
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。
4、不用export定义的变量只对该shell有效,对子shell也是无效的。
另:
---- 在UNIX系统中,我们在运行shell程序或系统命令的过程如下:

---- 假设在当前的shell环境下,我们运行ps -f命令.

---- 首先,当前的shell会调用:fork()命令,产生一个subprocess,该子进程完全复制了父进程的所有环境;

---- 之后,当前的shell会调用:exec ps -f命令,在新的子进程的环境中,运行ps -f 命令.子进程的环境变量会根据新的应用进行调整,并使之运行,当应用完成之后,子进程结束,返回到父进程.

---- 因此,通过上述过程分析,$cbpsprofile的运行的结果就可以预见,该shell程序的运行,环境变量重新赋值仅仅在子进程中,程序运行完后,返回到父进程,父进程的环境变量是不会受到影响的

参考:
https://blog.csdn.net/xhz_1983/article/details/73250033
https://blog.csdn.net/wgembed/article/details/22385469
https://www.cnblogs.com/fdd566/p/6692595.html
https://blog.csdn.net/moqingxinai2008/article/details/53909464

转载于:https://www.cnblogs.com/zzdbullet/p/9953144.html

利用shell脚本添加环境变量相关推荐

  1. shell脚本基础(环境变量、重定向、数学运算、退出脚本)

    一.使用环境变量 1.环境变量 所谓环境变量,就是用来存储有关shell会话和工作环境信息的特性,这项特性允许你在内存中存储数据,以便程序或shell中运行的脚本能够轻松访问到它们.这也是存储持久数据 ...

  2. Shell脚本,环境变量,位置变量,预定义变量,自定义变量,单引号双引号反引号用法,一般变量和交互式变量read定义,密文输入变量信息

    Shell脚本,变量,系统预设的环境变量,位置变量,预定义变量,用户的自定义变量 一.定义变量 1.以固定的名称存放可以变化的值 2.格式为 变量名=变量值 3.取消变量的格式 unset 变量名 4 ...

  3. 【263】Linux 添加环境变量 全局 shell 脚本

    Linux电脑添加环境变量 方法一:通过修改 profile 文件添加环境变量 1. 打开终端,输入[vi /etc/profile],如下所示,点击回车 [ocean@ygs-jhyang-w1 L ...

  4. Anaconda3安装pytorch未添加环境变量如何运行xxx.sh脚本

    Anaconda3安装pytorch未添加环境变量如何运行xxx.sh脚本? 通过添加临时环境变量可以解决!!! 1.找到anaconda3的安装位置,例如我的安装位置为:/home/hyw/data ...

  5. Windows 10 安装python到U盘并设计自动添加环境变量脚本

    1.在python官网正常下载python安装包 2.U盘插到电脑上,安装到U盘的版本如果和电脑上的完全相同,则需要暂时屏蔽python环境变量(未实验),我选择的是在U盘中安装的32位的python ...

  6. shell脚本中的变量

    shell脚本中的变量 1 变量的定义 2 shell脚本中变量的定义方法 2.1 环境级别 2.2 用户级别 2.3 系统级别 3 变量名称 4 变量的转译 4.1 转译 4.2 声明 4.3 变量 ...

  7. linux中利用shell脚本条件执行linux命令

    linux中利用shell脚本条件执行命令 在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们 ...

  8. linux 循环显示所有的sh.*文件.,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法...

    环境: Ubuntu下采用shell脚本实现 案例简述:文件夹内有许多子文件夹,这里需要自动读取所有的文件,包括他们的地址和文件名.通过观察文件名的规律,按照一定的规则裁剪出文件名的某一部分,该部分为 ...

  9. linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...

最新文章

  1. [HOW TO]-从github拉取optee代码拉不下来怎么办?
  2. 命令回复mysql数据库_用命令行恢复MySQL数据库
  3. 【转载】Centos7修改root密码
  4. Python中如何创建元素为ndarray的list
  5. kafka常见疑难问题
  6. 手机变身车机导航遥控器 高德地图上线手车互联新功能
  7. 传统春节海报设计没有思路?
  8. ecplise tomcat忽然出现404
  9. 【图论】用匈牙利算法找女朋友(纯爱党的大胜利)
  10. Android手势监听类GestureDetector的使用
  11. python如何处理inp文件_python 之文件操作
  12. 南京大学计算机复试离散数学,南京大学计算机复试线 历年南京大学计算机考研复试离散数学题集.doc...
  13. 聊聊在小米实习的日子
  14. 科大讯飞AIUI评估板开发笔记
  15. Linux常用命令——screen命令
  16. 如何打开被关闭的任务管理器
  17. 2021年全球无线天线收入大约6724.2百万美元,预计2028年达到14740百万美元
  18. web网站架构演变过程
  19. 大型ERP系统在线体验账号
  20. 2017年总结-我的学习之路

热门文章

  1. python可视化图表工具_酷炫的可视化图表工具来帮忙 深度评测五大Python数据可视化工具...
  2. python爬虫beautifulsoup_python爬虫初步之BeautifulSoup实战
  3. bat窗口大小设置_8-Flink中的窗口
  4. 人工神经网络——笔记摘抄2
  5. 第99:真正理解拉格朗日乘子法和 KKT 条件
  6. 数据库作业[定时执行任务]的创建
  7. 构造方法的调用顺序和成员变量的初始化时机以及动态绑定
  8. 跟着别人的感觉做网络推广之二
  9. Locust学习总结分享
  10. 洛谷p2704 炮兵阵地