自学Linux Shell6.3-定位系统环境变量

点击返回 自学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时就没有这个变量,需要使用的话还需要重新定义。

原文地址:https://www.cnblogs.com/yaoyaojcy/p/9185777.html

时间: 2024-10-29 12:34:16

自学Linux Shell6.3-定位系统环境变量的相关文章

Linux学习——定位系统环境变量

Linux系统用环境变量来在程序和脚本中标识自己.这为你的程序提供了获得系统信息的一个简便办法.问题是如何设置这些变量. 在你的Linux系统启动一个bash shell时,默认情况下bash在几个文件中查找命令.这些文件称作启动文件.bash检查的启动文件取决于你启动的bash shell的方式.启动bash shell有三种方式: 1. 登陆时当作默认登录shell 2. 作为非登录的交互式shell 3. 作为运行脚本时的非交互式shell 一.登录shell 当你登录linux系统时,b

Ubuntu Linux系统环境变量配置文件

Ubuntu Linux系统环境变量配置文件: /etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行./etc /environment : 在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量.~/.profile :  在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行

linux下如何设置和查看系统环境变量

在我写博客的时候,发觉自己对Linux环境变量这一块,属于小白级别的,发觉自己有必要写篇博客来巩固下这方面的知识. 1.显示系统环境变量: echo $PATH 2.设置一个新的变量: export   JAVA_HOME=/usr 3. 使用env命令显示所有的环境变量 直接敲env就会显示所有的环境变量 4.使用unset命令来清除环境变量 set可以设置某个环境变量的值,清除环境变量的值使用unset命令.如果未指定值,则环境变量的值为NULL.实例如下: export test ="te

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

系统环境变量的查看: [[email protected] ~]# envHOSTNAME=localhost.localdomainSELINUX_ROLE_REQUESTED=TERM=xtermSHELL=/bin/bashHISTSIZE=1000SSH_CLIENT=192.168.7.105 50641 22SELINUX_USE_CURRENT_RANGE=QTDIR=/usr/lib/qt-3.3QTINC=/usr/lib/qt-3.3/includ =========很多 其

Ubuntu Linux系统环境变量配置文件【转】

本文转载自:https://my.oschina.net/qinlinwang/blog/30471 Ubuntu Linux系统环境变量配置文件:  /etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. /etc /environment : 在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量. ~/.profile :  在登录时用到的第三个文件 是

Linux添加系统环境变量

在Linux下安装使用软件的时候,通常只能在软件安装目录下使用该软件命令(使用yum命令安装的除外),这样太麻烦,我们希望全局使用,可以将软件安装路径添加到系统环境变量里. 添加环境变量有2种方法: //1,使用export命令 export PATH=$PATH:/opt/software/node-v8.9.3-linux-x64/bin/node //export使用方法为 export PATH=$PATH:路径1:路径2:路径n;$PATH为系统变量,表示之前所有设置的路径,如果不加则

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

一.系统环境变量位置 在上章中,知道了如何修改系统环境变量,如PATH变量,以及创建自己的全局环境变量和局部环境变量.这篇学习怎么让环境变量的作用持久化.在此之前,先了解下系统环境变量文件会在哪些位置,当使用bash shell时,bash是如何查找环境变量位置的.下面先来介绍几个文件,这些文件叫启动文件或叫环境文件. bash检查的启动文件(环境文件)取决于你启动bash shell的方式.启动bash shell有3种方式: (1) 登录时的默认登录shell. (2) 交互式shell.

linux sudo 系统环境变量 用户环境变量

1. sudo就是普通用户临时拥有root的权限.好处在于,大多数时候使用用户自定义的配置,少数情况可以通过sudo实现root权限做事. 故而,需要注意的一点是,在你使用了sudo后,你临时不再是原先用户,不能使用属于自己的命令.举个例子:sudo source ... 该命令会执行失败,提示没有source命令.但你去掉sudo,又可以执行了.(从侧面可以反映sudo不等于获得root所有权限.)莫要滥用sudo. 2. 系统环境变量,对应/etc/profile文件,对所有用户有效.而用户

系统环境变量和用户环境变量

环境变量分为系统环境变量和用户环境变量. 你所说的环境变量是指系统环境变量,对所有用户起作用 而用户环境变量只对当前用户起作用. 例如你要用java,那么你把java的bin目录加入到path变量下面,那么它就是系统环境变量,所用用户登陆,在命令行输入java都会有java的帮助信息出来.而如果你在某个用户的变量下面新建一个变量,那么它就只对这个用户有用,当你以其他用户登陆时这个变量就和不存在一样. 这个问题在linux下面就相对好理解一些,系统变量都在/etc/profile文件里面,而用户的