博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Linux】Linux 下环境变量的设置 (临时环境变量和永久环境变量)
阅读量:4156 次
发布时间:2019-05-25

本文共 2277 字,大约阅读时间需要 7 分钟。

【Linux】Linux 下环境变量的设置 (临时环境变量和永久环境变量)

文章目录


一、基本概念

  环境变量environment variables)一般是指在操作系统当中用来指定操作系统运行环境的一些参数。环境变量通常具有某些特殊用途,在系统当中通常具有全局特性。


二、常见的环境变量

  PATH: 保存可执行程序路径的环境变量

  HOME: 保存用户家目录的环境变量

  SHELL: 保存当前使用的命令行解释器

  LD_LIBRARY_PATH: 程序运行时依赖的库文件的搜索路径的环境变量

补充:

  LD_LIBRARY_PATH 环境变量:会让操作系统搜索可执行程序依赖的动态库的路径,但并不是在编译阶段其效果的。在编译时,是需要使用-L 选项指定依赖库的路径的。

  静态库:Linux中后缀为 .a 文件

  动态库:Linux 中后缀为 .so 文件

image-20210625120045202


三、与环境变量相关的命令

  echo 显示某个环境变量值

  export 设置一个新的环境变量

  env 显示所有环境变量

  unset 清除环境变量

  set 显示本地定义的 shell 变量和环境变量

  sources [profile] 操作系统重新加载该文件


四、问题

  在 Linux 中,查看文件信息最常用的命令就是 ls 。通过下图可以看到 ls 保存在 /usr/bin 目录下,是一个可执行程序,这也体现了 Linux 中一切皆文件的思想。

在这里插入图片描述

  问题:为什么 ls 在任何目录文件下都可以执行,而我们自己编译出来的可执行程序,只能在当前编译出来的目录下运行呢?

  其实这就是我们刚刚说到的 PATH 环境变量,PATH 它是保存可执行程序路径的环境变量。ls 之所以能够在任意目录下执行, 一定是因为 ls 这个可执行程序所对应的目录被 PATH 环境变量保存下来了。

在这里插入图片描述

/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/cos/.local/bin:/home/cos/bin

  可以看到 PATH 环境变量中保存了很多路径,它们之间以冒号分隔。 ls 可执行程序所对应的目录 /usr/bin 也包含在其中,这就佐证了上述所说的。

  那么,如何能够让我们自己编译出来的可执行程序像 ls 一样在任意目录下都可以执行,这就得用到 export 设置一个新的环境变量。


五、新增环境变量的值

5.1 临时生效

  万能公式:

   export [环境变量名称] = $[环境变量名称] + [新增加的环境变量的值]

  注意: 在命令行中使用 export 是临时生效的,只在当前终端内有效,当前终端关闭之后,重新打开就没有之前设置的值。


5.2 永久生效

  将环境变量的值写到下面文件当中可以达到永久生效

  普通用户: ~/.bashrc 或者 ~/.bash_profile

  系统环境变量: /etc/bashrc

  ● ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取

  ● ~/.bash_profile:每个用户*都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件 仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

  ● /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。

  注意: 普通用户的环境变量千万千万不要往 /etc/bashrc 这个文件下添加!!!在添加完成之后,需要 source 一下,让操作系统重新加载该文件。


5.3 实例

5.3.1 临时生效

  我们现在有一个 test1 的可执行程序,现在使用 export 来临时新一个增环境变量的值。将 test1 可执行程序的路径,按照 5.1 中的万能公式添加,使用 echo $PATH 查看是否添加成功。

在这里插入图片描述

  再来验证一下,在当前 test1 编译出来的目录下可以执行成功。

image-20210625151857133

  在家目录下执行 test1 也可以执行成功。

在这里插入图片描述

  在根目录下执行 test1 也可以执行成功。即在的当前终端中已成功新增 test1 这个环境变量的值,不过要注意的是,这是临时生效的。

在这里插入图片描述


5.3.2 永久生效

  我们普通用户一般在 ~/.bashrc 或者 ~/.bash_profile 添加就可以了,不要往 /etc/bashrc 里添加(大牛可随意~)。注意:以 . 开头的文件时隐藏文件。

在这里插入图片描述

在这里插入图片描述
image-20210625155230124
  要永久生效,就得 vim ~/.bash_profile 进入文件中,按照 5.1 中的万能公式添加,保存退出。

在这里插入图片描述

  source 让造作系统内核重新加载 .bash_profile 文件,echo $PATH 查看是否添加成功。
image-20210625161122667
  再来验证一下,在当前终端的家目录下可以执行成功。

在这里插入图片描述

  重新开启一个终端,可以看到在任意目录下都可以执行成功。即在操作系统内核中已成功新增 test1 这个环境变量的值,并且是永久生效的。

在这里插入图片描述


六、总结

  临时生效:

   万能公式: export [环境变量名称] = $[环境变量名称] + [新增加的环境变量的值]

  永久生效:

   普通用户: ~/.bashrc 或者 ~/.bash_profile

   系统环境变量: /etc/bashrc


转载地址:http://enwxi.baihongyu.com/

你可能感兴趣的文章
<转> hadoop学习之hadoop完全分布式集群安装
查看>>
<转>hadoop学习之hadoop集群功能简单测试验证
查看>>
Package 'openssh-server' has no installation candidate 问题解决
查看>>
Ubuntu安装JDK及环境变量配置
查看>>
Hadoop环境搭建
查看>>
【Hadoop】HDFS的运行原理
查看>>
hadoop SecondNamenode详解
查看>>
如何将namenode与SecondaryNameNode分开配置
查看>>
Hadoop datanode添加与删除
查看>>
Hadoop Hdfs常用命令
查看>>
java 操作 hdfs
查看>>
MapReduce初级案例
查看>>
MapReduce篇之InputFormat
查看>>
js之offsetLeft属性探讨(转)
查看>>
即可编辑又可选的下拉列表框
查看>>
Apache Spark入门攻略
查看>>
spark java 编程
查看>>
Spark Standalone 原理
查看>>
Spark on YARN工作原理
查看>>
kafka集群搭建和使用Java写kafka生产者消费者
查看>>