利用shell脚本添加环境变量

在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

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

  1. 利用shell脚本添加环境变量

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

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

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

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

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

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

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

  5. shell for循环命令行_精心汇总的24道shell脚本面试题

    虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...

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

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

  7. linux shell ddos木马,利用Shell 脚本解决DDOS攻击问题

    思路:主要利用 awk ,if结构,sort,uniq #!/bin/bash FilePath="access.log" awk '{print $1}' $FilePath | ...

  8. springboot 远程调用shell脚本,环境为windows

    springboot 远程调用shell脚本,环境为windows pom.xml配置 yml配置文件 实体类 配置服务器SSH 具体业务 测试 由于需要调用shell脚本实现一些自动化控制操作,特记 ...

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

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

  10. 解决Linux下无法利用shell脚本启动conda虚拟环境问题

    解决Linux下无法利用shell脚本启动conda虚拟环境问题 问题 直接在脚本中激活conda环境时遇到了一个问题 解决 查看.bashrc文件 .bashrc文件在 /home/用户名 里面,因 ...

最新文章

  1. 大型AI已有自主意识了?LeCun开喷Open AI首席科学家
  2. hdu 3064
  3. 【Android RTMP】NV21 图像旋转处理 ( 问题描述 | 图像顺时针旋转 90 度方案 | YUV 图像旋转细节 | 手机屏幕旋转方向 )
  4. Android华容道之一步一步实现-8-开始游戏
  5. C语言程序运行慢是什么问题,为什么cgo的表现如此缓慢?我的测试代码有什么问题吗?...
  6. 单片机原理及其应用——单片机控制按键依次点亮8只发光二极管
  7. 利用URL拼接爬取获取有道翻译内容
  8. Vue系列vue-router的配置使用(一)
  9. mysql数据库做关联查询_mysql 数据库join关联查询using(xxx)的作用
  10. activex控件方法和事件
  11. 自动摘要学习计划(英语)
  12. ViewState - 页面状态保留
  13. IntelliJ IDEA汉化解决方案教程
  14. Windows部署的gogs开机自启动
  15. C语言——今天星期几(详细注释)
  16. godaddy mysql不存在_Godaddy免费空间问题及解决方案总结
  17. android为什么会用流量,手机流量为什么会偷跑?
  18. PowerBI实用技巧:案例一(动态切换坐标轴列值,例如交叉表头、列,图表坐标轴等)
  19. 自动驾驶仿真实验流程--以PanoSim仿真软件为例
  20. Win10修改MySQL数据库密码示例

热门文章

  1. Retrofit之CallAdapter简单解析
  2. 程序员转行杀猪是种什么体验?
  3. Android Multimedia框架总结(二十六)利用FFmpeg进行解码直播流
  4. 插件开发之360 DroidPlugin源码分析(五)Service预注册占坑
  5. python的变量在使用前不需要先赋值_每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。_学小易找答案...
  6. 11年瑞纳手动挡值多少钱_1个本科学历,值多少钱?
  7. mysql 加锁 索引_把MySQL中的各种锁及其原理都画出来
  8. npm,yarn对比
  9. c语言编程菜单流程图,C语言课程设计————写下流程图! 谢谢
  10. oracle里的字符串类型,Oracle中的字符串類型及相關函數詳解