首页 > 系统相关 >linux环境变量

linux环境变量

时间:2024-02-06 13:55:38浏览次数:22  
标签:profile 用户 环境变量 etc linux PATH 目录

Linux环境变量

一、环境变量的概念

1、环境变量的含义

程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的。

2、环境变量的分类

  • 按生效的范围分类。

系统环境变量:公共的,对全部的用户都生效。

用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。

  • 按生存周期分类。

永久环境变量:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。

临时环境变量:使用时在Shell中临时定义,退出Shell后失效。

3、Linux环境变量

Linux环境变量也称之为Shell环境量变,以下划线和字母打头,由下划线、字母(区分大小写)和数字组成,习惯上使用大写字母,例如PATH、HOSTNAME、LANG等。

二、常用的环境变量

1、查看环境变量

  • env命令

在Shell下,用env命令查看当前用户全部的环境变量。

上图只截取了部分环境变量,并非全部。

用env命令的时候,满屏显示了很多环境变量,不方便查看,可以用grep筛选。

  • env|grep 环境变量名

例如查看环境变量名中包含PATH的环境变量。

env|grep PATH

  • echo命令

echo $环境变量名

 注意,符号$不能缺少,这是语法规定。

2、常用的环境变量

  • PATH

可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序,PATH变量的具体用法本文后面的章节中有详细的介绍。

  • LANG

Linux系统的语言、地区、字符集,LANG变量的具体用法本文后面的章节中有详细的介绍。

  • HOSTNAME

服务器的主机名。

  • SHELL

用户当前使用的Shell解析器。

  • HISTSIZE

保存历史命令的数目。

  • USER

当前登录用户的用户名。

  • HOME

当前登录用户的主目录。

  • PWD

当前工作目录。

  • LD_LIBRARY_PATH

C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。

  • CLASSPATH

JAVA语言库文件搜索的目录,它也不是Linux缺省的环境变量,但对JAVA程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。

三、设置环境量

变量名='值' 

export 变量名
或export 变量名='值'

如果环境变量的值没有空格等特殊符号,可以不用单引号包含。

示例:

export ORACLE_HOME=/oracle/home
export ORACLE_BASE=/oracle/base
export ORACLE_SID=snorcl11g
export NLS_LANG='Simplified Chinese_China.ZHS16GBK'
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin:.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:.
采用export设置的环境变量,在退出Shell后就会失效,下次登录时需要重新设置。如果希望环境变量永久生效,需要在登录脚本文件中配置。

1、系统环境变量

系统环境变量对全部的用户生效,设置系统环境变量有三种方法。

  • 在/etc/profile文件中设置。

用户登录时执行/etc/profile文件中设置系统的环境变量。但是,Linux不建议在/etc/profile文件中设置系统环境变量。

  • 在/etc/profile.d目录中增加环境变量脚本文件,这是Linux推荐的方法。

/etc/profile在每次启动时会执行 /etc/profile.d下全部的脚本文件。/etc/profile.d比/etc/profile好维护,不想要什么变量直接删除 /etc/profile.d下对应的 shell 脚本即可。

/etc/profile.d目录下有很多脚本文件,例如: 

 

 在以上示例中,/etc/profile.d目录中的oracle.sh是Oracle数据库的环境变量配置文件,内容如下:

  • 在/etc/bashrc文件中设置环境变量。

该文件配置的环境变量将会影响全部用户使用的bash shell。但是,Linux也不建议在/etc/bashrc文件中设置系统环境变量。

2、用户环境变量

用户环境变量只对当前用户生效,设置用户环境变量也有多种方法。

在用户的主目录,有几个特别的文件,用ls是看不见的,用ls .bash_*可以看见。

 

  • .bash_profile(推荐首选)

当用户登录时执行,每个用户都可以使用该文件来配置专属于自己的环境变量。

  • .bashrc

当用户登录时以及每次打开新的Shell时该文件都将被读取,不推荐在里面配置用户专用的环境变量,因为每开一个Shell,该文件都会被读取一次,效率肯定受影响。

  • .bash_logout

当每次退出系统(退出bash shell)时执行该文件。

  • .bash_history

保存了当前用户使用过的历史命令。

3、环境变量脚本文件的执行顺序

环境变量脚本文件的执行顺序如下:

/etc/profile->/etc/profile.d->/etc/bashrc->用户的.bash_profile->用户的.bashrc

同名的环境变量,如果在多个脚本中有配置,以最后执行的脚本中的配置为准。

还有一个问题需要注意,在/etc/profile中执行了/etc/profile.d的脚本,代码如下:

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
所以,/etc/profile.d和/etc/profile的执行顺序还要看代码怎么写。

四、重要环境变量的详解

1、PATH环境变量

可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序。如果可执行程序的目录不在PATH指定的目录中,执行时需要指定目录。

  • PATH环境变量存放的是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录。

export PATH=目录1:目录2:目录3:......目录n:.

  • PATH缺省包含了Linux系统命令所在的目录(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含这些目录,Linux的常用命令也无法执行(要输入绝对路径才能执行)。

示例:

  • 在用户的.bash_profile文件中,会对PATH进行扩充,如下:

export PATH=$PATH:$HOME/bin

  • 如果PATH变量中没有包含圆点.,执行当前目录下的程序需要加./或使用绝对路径。

示例:

2、LANG环境变量

LANG环境变量存放的是Linux系统的语言、地区、字符集,它不需要系统管理员手工设置,/etc/profile会调用/etc/profile.d/lang.sh脚本完成对LANG的设置。

CentOS6.x 字符集配置文件在/etc/syscconfig/i18n文件中。

CentOS7.x 字符集配置文件在/etc/locale.conf文件中,内容如下:

3、LD_LIBRARY_PATH环境变量

C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要。

LD_LIBRARY_PATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。

export LD_LIBRARY_PATH=目录1:目录2:目录3:......目录n:.

4、CLASSPATH

JAVA语言库文件搜索的目录,它也不是Linux缺省的环境变量,但对JAVA程序员来说非常重要。

CLASSPATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。

五、环境变量的生效

在Shell下,用export设置的环境变量对当前Shell立即生效,Shell退出后失效。

在脚本文件中设置的环境变量不会立即生效,退出Shell后重新登录时才生效,或者用source命令让它立即生效,例如:

source /etc/profile

六、应用经验

虽然设置环境变量的方法有多种,但是建议系统环境变量建议在/etc/profile.d目录中配置,用户环境变量在用户的.bash_profile中配置,不建议在其它脚本文件中配置环境变,会增加运维的麻烦,容易出错。

标签:profile,用户,环境变量,etc,linux,PATH,目录
From: https://www.cnblogs.com/wusl123/p/18009598

相关文章

  • Linux根文件系统
    概念根文件系统是什么根文件系统是特殊用途的文件系统,必须属于某种文件系统格式。那么文件系统是用来干嘛的?首先,存储设备(块设备,像硬盘、flash等)是分块(扇区)的,物理上底层去访问存储设备时是按照块号(扇区号)来访问的。这就很麻烦。其次,文件系统是一些代码,是一套软件,这套软件的......
  • linux调试工具strace,gdb
    strace用于跟踪系统调用和信号。strace是一个集诊断、调试、统计于一体的工具,我们可以使用strace跟踪程序的系统调用和信号传递分析程序,以解决问题或了解程序工作过程。当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器。strace最简......
  • Linux 中实现去重复后仍然按照原来的顺序输出
     001、一般去重复[root@PC1test01]#lsa.txt[root@PC1test01]#cata.txt##测试文本cdcabb[root@PC1test01]#cata.txt|sort|uniq##去重复后也排序了abcd 002、去重复后保持原来的顺序[root@PC1test01]#lsa......
  • 【linux】如何查看CPU核数
    1.使用cat/proc/cpuinfo命令在Linux系统中,可以通过查看/proc/cpuinfo文件来获取CPU的详细信息,包括核数、型号、频率等。首先,打开终端,输入以下命令:cat/proc/cpuinfo然后,按下回车键,终端将显示类似如下的信息:processor:0vendor_id:GenuineIntelcpufamily:6mod......
  • 看看Linux下有没有你喜欢的工具
    今天,和大家分享一些与Linux中工具相关的知识。本篇文章包含了如何去安装,有那些值得安装的软件等知识。Linux的软件安装在Linux中,我们安装软件的方式,主要有三种。一是,源代码安装。别人直接把源代码给,让你自己安装。这种方式不推荐,即使是程序员也会十分头疼,刚刚修好一个bug,又报一堆错......
  • Linux文件分片、重组
    如果一个文件特别的大,想要直接打开的话会特别的慢,我们只需要对这个文件进行切割,变成许多个小的文件,然后再去查看小文件的话打开的速度就不会那么慢了切割文本#假设我们当前目录存在一个10G的文件data,现在对他进行分片[root@localhostopt]#split-d-b1Gdata"data-part"......
  • eviacam在Arch/Manjaro Linux下的安装
    安装base-devel安装编译工具,默认的依赖里没有编译工具sudoyay-Sbase-devel如果安装编译工具,会报类似下面的错误:安装eviacamyay-Seviacam这里主要是用AUR的方式来顺便把依赖安装了,也可以手动安装依赖,然后Clone源码这一步会报类似下面的错误:根据错误提示修......
  • Linux-查看文本中第m行到n行的内容
    如何查看文件第6749行到6758行?方式一:使用sed命令不显示行号:sed-n'M,Np' fileName 例如:sed-n'6749,6758p' hive-default.xml.template 显示行号:sed=fileName|sed'N;s/\n/\t/'|sed-n'M,Np'例如:sed=hive-default.xml.template|sed&......
  • 一行命令找出 Linux 中所有真实用户
    哈喽大家好,我是咸鱼。接触过Linux的小伙伴们都知道在Linux(或者说类Unix)中,有三种类型的用户:超级用户(UID为0):即root用户,拥有最高权限。系统用户(UID为1~999):系统内建用户,用于运行系统服务和守护进程。普通用户(UID为1000~60000):为了让使用者能够使用Linux系统资源而......
  • Linux Control Groups
    前言本文主要会介绍笔者在学习LinuxCgroups时所总结的知识点,其中会涉及到Cgroups中的抽象概念、使用规则、实现原理以及API等方面的相关内容。笔者也会将自己的理解在文中进行阐述,这也算是在和大家交流心得的一个过程。若文中有错误的理解和概念,请大家及时纠正;吸纳大家的建议,对......