点击返回 自学Linux命令行与Shell脚本之路

6.3-系统环境变量持久化

在你登录Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找命令,这几个文件成为启动文件;
bash检查的启动文件取决于你启动bash shell的方式,启动bash shell有3中方式:

  • 登录时当做默认登录shell;
  • 作为非登录shell的交互shell,在命令行中输入bash;
  • 作为运行脚本的非交互shell,在shell脚本中执行shell;

1  登陆shell

当你登录Linux系统时,登陆了shell会从5个不同的启动文件里读取命令:

  • /etc/profile:默认bash shell的主启动文件,每个用户登录都会执行这个启动文件;
  • $HOME/.bash_profile:用户专用启动文件;
  • $HOME/.bashrc:用户专用启动文件;
  • $HOME/.bash_login:用户专用启动文件;
  • $HOME/.profile:用户专用启动文件;

1.1 /etc/profile文件  主要登陆了linux系统,bash就会执行/etc/profile/启动文件中的命令
         每个发行版的/etc/peofile文件都有不同的设置和命令

以上程序含有for循环是用来迭代/etc/profile.d目录下所有文件

1.2 $HOME目录下的启动文件 ,一般linux发行版只用到下面4个里面的1~2个文件:

  • $HOME/.bash_profile:用户专用启动文件;
  • $HOME/.bashrc:用户专用启动文件;
  • $HOME/.bash_login:用户专用启动文件;
  • $HOME/.profile:用户专用启动文件;

他们都是隐藏文件,位于用户HOME目录下,所以每个用户都可以编辑这些文件并添加自己的环境变量,这些环境变量会在每次启动bash shell会话时候生效。
如个人的测试机上面只有.profile     .bashrc

2  交互式shell

如果你在命令行提示符敲下bash命令,你启动的shell称作为交互式shell
如果bash是作为交互式shell启动的,它就不会去访问/etc/profile文件,而会去用户的HOME目录检查.bashrc是否存在;
.bashrc文件有两个作用;

  • 查看/etc目录下的公用bashrc文件;
  • 而是为用户提供了一个定制自己的命令别名和私有脚本函数的地方;

3  非交互式shell

系统执行shell脚本时用的就是非交互式shell,不同的地方在于它没有命令行提示符。
当shell启动一个非交互式shell进程时,它会检查这个环境变量来查看要执行的启动文件,如果有指定的文件,shell会执行该文件里的命令,这通常包括shell脚本变量设置。

总结 :

1. 按变量的生存周期来划分,Linux变量可分为两类:

  • 永久的:需要修改配置文件,变量永久生效。
  • 临时的:使用export命令声明即可,变量在关闭shell时失效。

2.永久环境变量,对所有用户有效  
   修改/etc/profile文件也可,但是如果升级所用发行版也一样会更新,定制过的变量会消失
   建议修改/etc/profile.d目录 中创建一个以.sh为结尾的文件,把定制过的全局环境变量放置其中

3.永久环境变量,对单一用户有效
   修改用户目录下的.bash_profile文件

4. 临时环境变量,只对当前shell(BASH)有效
    在shell的命令行下直接使用[export 变量名=变量值] 定义变量,
    该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,
    shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

自学Linux Shell6.3-系统环境变量持久化的更多相关文章

  1. 自学Linux Shell6.1-环境变量概念

    点击返回 自学Linux命令行与Shell脚本之路 6.1-环境变量概念 环境变量 在Linux中,很多程序和脚本都通过环境变量来获取系统信息.存储临时数据和配置信息: bash shell使用环境变 ...

  2. Linux编程 13 (系统环境变量位置, 环境变量持久化)

    一.系统环境变量位置 在上章中,知道了如何修改系统环境变量,如PATH变量,以及创建自己的全局环境变量和局部环境变量.这篇学习怎么让环境变量的作用持久化.在此之前,先了解下系统环境变量文件会在哪些位置 ...

  3. 自学Linux Shell6.2-用户自定义环境变量

    点击返回 自学Linux命令行与Shell脚本之路 6.2-用户自定义环境变量 1.设置局部用户定义变量 一旦启动bash shell(或者执行一个shell脚本),你就能创建这个shell进程可见的 ...

  4. 自学Linux Shell11.3-使用变量

    点击返回 自学Linux命令行与Shell脚本之路 11.3-使用变量 Shell脚本的执行通常可以采用以下几种方式: 1):bash script-name或sh script-name(推荐使用) ...

  5. linux(centos) 添加系统环境变量

    系统环境变量,其实就就是一个添加至系统环境中的路径变量. 编译php的扩展时经常会在扩展包源码目录里执行phpize,每次执行的时候都要敲入一大堆目录,诸如:/usr/local/php/bin/ph ...

  6. Linux 之添加系统环境变量

    PATH 值是一系列目录,当执行命令时,linux就在这些目录下查找,其格式为: PATH=$PATH:<PATH1>:<PATH2>:<PATH3>:------ ...

  7. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

  8. 4、Ubuntu系统环境变量详解

    参考:Linux公社Ubuntu系统环境变量详解 UNIX/Linux系统中的环境变量和库文件的使用方法 由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,因此我们需要了解 ...

  9. linux系统环境变量.bash_profile/bashrc文件

    系统环境变量的查看: [root@localhost ~]# envHOSTNAME=localhost.localdomainSELINUX_ROLE_REQUESTED=TERM=xtermSHE ...

随机推荐

  1. 【转】Influxdb 编译

    编译针对当前 github上influxdb的master代码 其实github上的CONTRIBUTING.md 里已经说的很明白,按其一步步来开即开,唯一遇到的问题可能就是下载依赖时被墙无法下载, ...

  2. VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书

    原文:VS2017中 C# dll引用(C生成dll,C++生成dll)小结 - 简书 dll引用小结 一.dll与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library” ...

  3. Nowcoder 牛客练习赛23

    Preface 终于知道YKH他们为什么那么喜欢打牛客网了原来可以抽衣服 那天晚上有空就也去玩了下,刷了一波水TM的YKH就抽到了,我当然是没有了 题目偏水,好像都是1A的.才打了一个半小时,回家就直 ...

  4. [Oracle]为何Archivelog 没有马上被删除

    [Oracle]为何Archivelog 没有马上被删除 客户设置了 Archivelog 的 deletion policy 是 CONFIGURE ARCHIVELOG DELETION POLI ...

  5. Flutter - 本地化启动列表中App名字

    上一篇讲了 Flutter - 本地化语言 但是这还有一点小欠缺,就是启动器中的App名字还是无法本地化. 比如英文系统中Play Store,在中文手机中就会显示Play 商店 那么为了解决这个问题 ...

  6. 快速零配置迁移 API 适配 iOS 对 IPv6 以及 HTTPS 的要求

    本文快速分享一下快速零配置迁移 API 适配 iOS 对 IPv6 以及 HTTPS 的要求的方法,供大家参考. 原文发表于我的技术博客 零配置方案 最新的苹果审核政策对 API 的 IPv6 以及 ...

  7. Sprint 冲刺第三阶段第3-5天 数据库代码

    数据库代码: package com.example.brdemo; import android.app.Activity; import android.content.Intent; impor ...

  8. mybatis分页 -----PageHelper插件

    对查询结果进行分页 一,使用limit进行分页 1.mybatis 的sql语句: <if test="page !=null and rows !=null"> li ...

  9. [转帖]Intel新一代Xeon完整曝光

    AMD已经官宣7nm工艺的第二代EPYC霄龙服务器平台,今年上半年就会大规模出货,而在Intel这边,由于10nm工艺进展还是不够快,在服务器上还是需要14nm继续打天下,而且还有两代14nm工艺产品 ...

  10. [转帖]ASP.NET的版本?

    ASP.NET的版本? https://www.cnblogs.com/guogangj/p/8526365.html 问题源于这么一本书: <ASP.NET 4 解密(卷1)>,这本书大 ...