linux中的source etc/profile

背景

在生产环境使用arths heapdump 文件的时候,出现在root权限下使用

java -jar arthas-boot.jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y10TjMi3-1588001939903)(01EF156FEEDD45F99CCB991E54CC6A38)]
我们可以看到不在root权限下启动arths 是监控不到他的Java进程的,于是我切换root权限,再启动arthas,但是此时使用java -jar命令没有生效。这个时候我使用了

source /etc/profile

这个时候再去在root 权限下启动于是就成功启动了

1. 为什么没有在使用source /etc/profile 命令前使用java命令不能生效呢?

  1. 当时我的第一反应是root权限下没有安装jdk?但是再一想这要是没有装 我的正在跑的java程序那是见了鬼了。再想想奥环境变量,不同的用户拥有不同的环境变量。好像的确是那么会事。于是打算进行入jdk的安装目录搞一波。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rmGzHWrT-1588001939910)(E702A70BA6404D91AFF5A4306C1014C6)]
    直接使用jdk自带的内存监控吧。
  2. 怎样直接就可以同步用户之间的环境变量呢?,面向搜索编程搞起 于是source 搞起

2. source /etc/profile 的作用是什么呢?

  1. 先看一下profile底下放的是什么
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F0dCxXnl-1588001939915)(817E2EC87AFE4EF9B3C8CC7D64D3DE78)]
  2. 用来干什么的呢?
    看了上面文件奥path了什么的 profile(/etc/profile),用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。当用户登录(login)时,文件会被执行,并从/etc/profile.d目录的配置文件中查找shell设置。那这下我们一下子就清楚了

3. 延伸一下source的命令

1. 在当前bash环境下读取并执行FileName中的命令。

*注:该命令通常用命令“.”来替代。

source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。

同样的,当前脚本中配置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 等等。

例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK,发现没有值,假如您用source来执行 ,然后再echo,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是source不同他就是在本shell中执行的,所以能够看到结果。

2. source命令的一个妙用

在编译核心时,常常要反复输入一长串命令,如

make mrproper
make menuconfig
make dep
make clean
make bzImage
.......

这些命令既长,又繁琐。而且有时候容易输错,浪费你的时间和精力。如果把这些命令做成一个文件,让它自动按顺序执行,对于需要多次反复编译核心的用户来说,会很方便。

用source命令可以办到这一点。它的作用就是把一个文件的内容当成是shell来执行。

先在/usr/src/linux-2.4.20目录下建立一个文件,取名为make_command,在其中输入如下内容:

make mrproper &&
make menuconfig &&
make dep &&
make clean &&
make bzImage &&
make modules &&
make modules_install &&
cp arch/i386/boot/bzImge /boot/vmlinuz_new &&
cp System.map /boot &&
vi /etc/lilo.conf &&
lilo -v

文件建立好之后,以后每次编译核心,只需要在/usr/src/linux-2.4.20下输入source make_command 就行了。这个文件也完全可以做成脚本,只需稍加改动即可。

shell编程中的命令有时和C语言是一样的。&&表示与,||表示或。把两个命令用&&联接起来,如 make mrproper && make menuconfig,表示要第一个命令执行成功才能执行第二个命令。对执行顺序有要求的命令能保证一旦有错误发生,下面的命令不会盲目地继续执行。

参考文章:https://blog.csdn.net/violet_echo_0908/article/details/52056071

linux使用 source etc/profile相关推荐

  1. 解决linux下source /etc/profile关闭终端失效问题

    本来想配置环境变量的,看网上和博客上很多说改/etc/profile,然后source /etc/profile之后就可以永久保存使环境变量生效,但是终端一关闭,就环境变量就失效了,其他终端也用不了. ...

  2. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效

    博客园 首页 新随笔 联系 管理 订阅 <div class="blogStats"><!--done--> 随笔- 6  文章- 2  评论- 2 < ...

  3. linux 重读环境变量,关于linux中使用source /etc/profile重新读取配置后,新的环境变量只能在当前终端里面有效,新开的终端提示 command not found...

    文章目录 问题 知识点 问题分析及解决 补充 问题 在使用linux桌面环境(通常是ubuntu/debian/deepin等版本的linux)的时候,新增环境变量后,会使用source /etc/p ...

  4. Linux每次开机都要source /etc/profile的解决方法

    概述 前两天安装了go,然后在/etc/profile里加了环境变量,当时source之后也没发现什么问题,然后关机之后重启就发现环境变量竟然没有生效.还得使用source命令,吐血 解决方法 在用户 ...

  5. linux下使用source /etc/profile保存配置后,新的环境变量只能在一个终端里面有效...

    2019独角兽企业重金招聘Python工程师标准>>> 问题: 在/etc/profile中添加环境变量后,是使用source /etc/profile编译后只能在当前终端生效 重新 ...

  6. 每次执行java命令 都要source_解决每次执行Java等命令时都要重新source /etc/profile后才能执行,否则找不到命令...

    linux mint 我们通常将环境变量设置在/etc/profile这个文件中,这个文件是全局的. /etc/profile:在登录时,操作系 统定制用户环境时使用的第一个文件 ,此文件为系统的每个 ...

  7. 关于source /etc/profile命令

    在linux下安装海思交叉编译工具的时候,碰到个问题,本来提示安装成功了,但是在用makefile编译库的时候,仍然提示找不到交叉编译工具链: make:arm-vfp-uclibc-linux-gn ...

  8. 每次重启需要source /etc/profile的原因-环境变量

    linux主机每次重启后,所有配置的变量均失效: 需要source /etc/profile 命令才有效 原因: 缺少$PATH部分(红圈圈) 可以想想 系统先加载/etc/profile 然后再加载 ...

  9. linux下source命令使用详解

    这篇文章主要为大家详细介绍了Linux Source命令及脚本的执行方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Linux Source命令及脚本的执行方式解析 当我修改了/etc/pro ...

最新文章

  1. CSS之定位(定位/相对定位)
  2. 英语和汉语谁更高效?17大主流语言测试结果:没有优劣之分,带宽都是每秒39bit...
  3. php date时间本地化问题
  4. 复习--3--对于第三堂课的总结--将两个页面相互用超链接链接到一起
  5. wxWidgets:显示如何从 DLL 使用 wx 的示例
  6. python多维数据post给php_使用Python中的POST将数据发送到PHP
  7. linux on android分区,android 分区大小 地址查看
  8. 犹如“狼来了”!折叠屏手机Galaxy Fold可能下月上市
  9. 5件你可能不知道可以使用 CSS-in-JS 来做的事情
  10. mvc html 辅助方法,MVC HTML辅助类常用方法记录
  11. 在Java代码(非JSP及Action,Servlet,Controller)中获得WebRoot的物理路径
  12. python 线程(创建2种方式,锁,死锁,递归锁,GIL锁,守护进程)
  13. 主成分分析(PCA)实现代码
  14. 自适应漫画手机APP应用下载页源码
  15. Firefox Focus 9.0 将新增广告拦截插件
  16. smartupload功能介绍
  17. Matlab 绘图函数之plot、semilogx、semilogy、loglog函数的使用
  18. 每日新知——MySQL索引类型及创建
  19. 轻松禁止自动更新FLASH插件有绝招
  20. 搜索引擎SEO 入门学习摘要笔记

热门文章

  1. PICT 生成正交测试用例教程
  2. 视频封面如何一键置入到视频第1帧的方法
  3. WIN7共享文件需要输入密码的解决办法
  4. WebGL入门(三十四)-三维空间中鼠标控制物体旋转,用鼠标控制立方体的旋转
  5. “Mac应用”已损坏,无法打开解决办法
  6. Python常用库及使用介绍
  7. 全球领先,人像修复、人像抠图、动漫增强技术
  8. 进制间的相互转换,二进制转十进制,八进制转十进制,十六转十进制
  9. Java基础总结大全(面试必看)
  10. SpringCloud读取Nacos中的配置文件