浅谈Linux环境变量文件介绍_Linux

来源:脚本之家  责任编辑:小易  

八 环境变量8.1 查看环境变量env ? 显示所有的环境变量设置echo$ENV_VARIABLE ? 显示指定环境变量的设置例:echo$PATHbin:/etc:/usr/bin:/tcb/bin8.2 设定环境变量ENV_VARIABLE=XXX;export ENV_VARIABLE例:PATH=$PATH:$INFORMIXDIR/bin;export PATH ? 将环境变量PATH设定为原PATH值+$INFORMIXDIR/bin8.3 取消环境变量设置unset$ENV_VARIABLE例:set GZJ=gzj;export GZJ ? 设置环境变量GZJecho$GZJgzj ? 显示环境变量值unset$GZJ ? 取消环境变量GZJ的设置echo$GZJ? 已取消一 makefile规则makefile是一个make的规则描述脚本文件,包括四种类型行:目标行、命令行、宏定义行和make伪指令行(如“include”)。makefile文件中注释以“#”开头。当一行写不下时,可以用续行符“\\”转入下一行。1.1 目标行目标行告诉make建立什么。它由一个目标名表后面跟冒号“:”,再跟一个依赖性表组成。例:example:depfile deptarget该目标行指出目标example与depfile和deptarget有依赖关系,如果depfile或deptarget有修改,则重新生成目标。example1 example2 example3:deptarget1 deptarget2 depfile该目标行指出目标名表中的example1、example2、example3这三个各自独立的目标是用相同的依赖列表和规则生成的。clean:空的依赖列表说明目标clean没有其他依赖关系。目标行后续的以Tab 开始的行是指出目标的生成规则,该Tab字符不能以空格代替。例如:example.o:example.c example.hcc –c example.c该例子指出目标example.o依赖于example.c和example.h。如果example.c或example.h其中之一改变了,就需要执行命令cc –c example.c重新生成目标example.o。可以用文件名模式匹配来自动为目标生成依赖表,如:prog:*.c以下是一个简单的makefile的例子:图 1 最简单的makefile例make使用makefile文件时,从第一个目标开始扫描。上例中的第一个目标为all,所以目标clean不会自动被执行,可以通过命令make clean来生成目标。1.2 命令行命令行用来定义生成目标的动作。在目标行中分号;后面的文件都认为是一个命令,或者一行以Tab制表符开始的也是命令。如在上面的makefile例中,第三行以Tab字符开始的cc命令即是一个命令行,说明要生成hello应执行的命令。也可以写成:hello:hello.o;cc –c hello –L…一般情况下,命令行的命令会在标准输出中回显出来,如对上面的makefile执行make时,标准输出如下:cc-c hello.ccc-o hello-L/usr/X11R6/lib-L/usr/lib-lXm-lXt-lX11 hello.occ-c hello1.ccc-o hello1-L/usr/X11R6/lib-L/usr/lib-lXm-lXt-lX11 hello1.o如果不希望命令本身回显,可在命令前加@字符,如在上例中不希望回显cc –c hello.c和cc –c hello1.c,可修改makefile文件如下:图 2 抑制回显的makefile例对该makefile文件执行make时,标准输出如下:cc-o hello-L/usr/X11R6/lib-L/usr/lib-lXm-lXt-lX11 hello.occ-o hello1-L/usr/X11R6/lib-L/usr/lib-lXm-lXt-lX11 hello1.o可以看出,命令行前有@字符的不回显。1.3 宏定义行在makefile中,可以使用宏定义减少用户的输入,例如上例中对hello和hello1的编译选项均为“-L/usr/X11R6/lib-L/usr/lib-lXm-lXt-lX11”,此时可以用宏来代替,如:图 3 使用宏定义的makefile例宏定义的基本语法是:name=value在定义宏时,次序不重要。宏不需要在使用前定义。如果一个宏定义多次,则使用最后一次的定义值。可以使用“$”字符和“()”或“{}”来引用宏,例如:cc –o hello.o$(CCFLAGS)hello.o也可以将一个宏赋值给另一个宏,但这样的定义不能循环嵌套,如:A=value1B=value2C=$(A)$(B)等价于C=value1 value21.4 伪指令makefile大部分由宏定义行、命令行和目标行组成。第四种类型是make伪指令行。make伪指令没有标准化,不同的make可能支持不同的伪指令集,使得makefile有一定的不兼容性。如果要考虑移植性问题,则要避免使用make伪指令。但有一些伪指令,如include,由于使用比较多,很多不同make都提供该伪指令。1.4.1 伪指令include该伪指令类似C语言中的#include,它允许一次编写常用的定义并包括它。include伪指令必须在一行中,第一个元素必须是include,并且跟一个要包含的文件名,如:include default.mk1.4.2 伪指令“#”“#”字符也是make的伪指令,它指出“#”后面的文件是注释,如:PROGNAME=test#define macrodon't modify this二 后缀规则2.1 双后缀规则在前面的makefile例中有许多重复内容,例如,生成hello和hello1的命令类似,生成hello.o和hello1.o的命令也类似,除了编译或链接的文件不一样外,其它均相同,这时,我们就可以使用后缀规则。首先看一个双后缀的例子:图 4 使用双后缀规则的makefile例后缀规则使用特殊的目标名“.SUFFIXES”。第一行中.SUFFIXES的依赖表为空,用来清除原有的后缀规则,因为.SUFFIXES可以在makefile中多次使用,每一次都将新的后缀规则加入以前的后缀规则中。第二行中指定后缀规则为“.c.o”,即表示将所有的.c文件转换为.o文件。第三行指定将.c文件转换成.o文件的方法。(CC)为make的预定义宏,其默认值为cc,$<为特殊的宏,代替当前的源文件,即所有要编译的.c文件。第六行指定目标hello和hello1的生成方法。为特殊的宏,代替当前的目标名,即hello和hello1,$@.o即为hello.o和hello1.o。上例介绍的是双后缀规则,即它包含两个后缀,如.c.o,用来把一个C源文件编译为目标文件。双后缀规则描述如何由第一个后缀类型的文件生成第二个后缀类型的文件,例如:.c.o规则描述如何由.c文件生成.o文件。2.2 单后缀规则单后缀规则描述了怎样由指定后缀的文件生成由它基名为名字的文件。例如使用单后缀规则.c,可以由hello.c和hello1.c生成hello和hello1文件。例如将前面的makefile改为:图 5 使用单后缀规则的makefile例由于.c后缀规则为make标准后缀规则,make为其指定了相应的命令行,所以在makefile中可以不用再指定其目标生成的具体命令行。下表是make提供的标准后缀规则。表 1 make标准后缀规则后缀规则 命令行c$(LINK.c)–o$@$<$(LDLIBS)c.ln$(LINK.c)$(POUTPUT OPTPUT OPTION)–i$c.o$(COMPILE.c)$(OUTPUT OPTION)$c.a$(COMPILE.c)–o$%$(AR)$(ARFLAGS)$@$%(RM)$%三 特殊目标在后缀规则中使用了特殊目标.SUFFIXES,用来指定新增的后缀规则。make还提供了几个特殊目标来设置make的行为,下面为一些特殊的目标:?.IGNOREmake在执行命令行时,如果返回的是错误码,make的缺省动作是停止并退出。增加该目标后,make将忽略命令行返回的错误码,并继续执行后续的操作。?.SILENT前面已经介绍过,make在执行命令行时会回显命令行内容,在命令行前增加“@”字符将抑制该命令行的回显。如果增加该目标,所有的命令行不再回显,相当于在每个命令行前均增加了“@”字符。?.PRECIOUS当收到一个信号或从shell命令返回非零的错误码时,make删除它所有已建立的文件。但有些文件即使出了错误,用户也不想让make删除,这些文件可以作为.PRECIOUS目标的参数。它可以在一个makefile中出现多次,每一次都累积文件列表。?.SUFFIXES它为makefile指定新的后缀规则,新的后缀规则作为.SUFFIXES的依赖表给出。SUFFIXES可以在一个makefile中多次使用,每一次都将新的后缀规则加入以前的后缀规则中,如果.SUFFIXES的依赖表为空,则设置后缀规则表为空。四 特殊的宏为简单使用规则,make提供了几个特殊的宏:?$@整个当前目标名的值可以由宏“$@”来代替。?$当前的源文件由“$<”来代替。例如,在前面的例子中用到了$(CC)–c$<,其中的“$<”是所有要编译的.c文件。宏“$<”仅在后缀规则或.DEFAULT中有效。?$当前目标的基名由宏“$”来代替。例如目标的名字是hello.o,则基名就是除去了后缀.o的hello。以上介绍的特殊宏使用了make自身的规则,用户不可以改变。下表介绍了C中预定义的宏。用途 宏 默认值库文档汇编命令 AR arARFLAGS rvAS asASFLAGSCOMPILE.s$(AS)$(ASFLAGS)$(TARGET ARCH)C编译器命令 CC ccCFLAGSCPPFLAGSCOMPILE.c$(CC)$(CFLAGS)$(CPPFLAGS)$(TARGET ARCH)–cLINK.c$(CC)$(CFLAGS)$(CPPFLAGS)$(LDFLAGS)$(TARGET ARCH)链接编辑器命令 LD ldLDFLAGSrm命令 RM rm后缀列表 SUFFIXES.o.c.c~.s.s~.S.S~.ln.f.f~.F.F~.l.mod.mod~.symdef.def~.p.p~.r.r~.y.y~.h.h~.sh.sh~.cps.cps~五 makefile的应用当调用make时,它在当前目录下搜索文件名是“makefile”或“Makefile”的文件,并执行。如果不想使用上述缺省文件,可以使用命令行中的“-f”来指定文件,如将编写的makefile命名为mklib,则指定为“make –f mklib”www.zgxue.com防采集请勿采集本网。

在Linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量和用户级环境变量。 系统级环境变量:每一个登录到系统的用户都能够读取到系统级的环境变量 用户级环境变量:每一个登录到系统的用户只能够读取属于自己的用户级的环境变量 

这个使用一条命令就可以了吧 find.-type f-print|wc-l 这个是用来统计当前目录下包含子目录下的文件的个数 你可以根据你的需要把点换成你需要统计的目录

自然而然地,环境变量的配置文件也相应的被分成了系统级和用户级两种。

/etc/profile文件,修改后使用source命令使之生效 source/etc/profile 另外,针对特定用户的话可以修改家目录下的bash_profile文件 vim~/.bash_profile

系统级

/etc/profile

管理环境变量的文件也分为系统级和用户级的。1.系统级: (1)/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于登录到系统的每一个用户。该文件一般是调用/

在系统启动后第一个用户登录时运行,并从/etc/profile.d目录的配置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。

配置文件的优先级高于环境变量,这意味着,如果是比较通用的环境变量值你就设到环境变量里,你你需要用到的值不是与环境变量的值不同,你就在配置文件里重新设置,这样你就可以用到你需要的值又

 提示:在Linux系统中,使用以下命令可以使配置文件立刻生效。

有几种方法: 1、重新登录;2、重启机器;3、使用source命令,如:#soure.bash_profile 就可以直接让环境变量的修改生效了。4、使用点号也可以让环境变量生效,如:#.bash_profile “.”命令是

source /etc/profileecho $PATH

/etc/bashrc(Ubuntu和Debian中是/etc/bash.bashrc)

在 bash shell 打开时运行,修改该文件配置的环境变量将会影响所有用户使用的bash shell。

注意:这里的bash shell有不同的类别,不同的类别所使用的环境变量配置文件也有所不同。一般情况下,非登录shell不会执行任何profile文件,非交互shell模式不会执行任何bashrc文件。

# 登录shell和非登陆shell:登录shell # 需要输入用户密码,例如 ssh 登录或者 su - 命令提权都会启动login shell模式非登陆shell # 无需输入用户密码; # 交互shell和非交互shell:交互shell # 提供命令提示符等待用户输入命令的是交互shell模式非交互shell # 直接运行脚本文件是非交互shell模式

/etc/environment

在系统启动时运行,用于配置与系统运行相关但与用户无关的环境变量,修改该文件配置的环境变量将影响全局。

用户级

~/.profile(推荐首选)

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

~/.bashrc

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

~/.bash_profile 或 ~./bash_login

~/.bash_profile or ~./bash_login - If one of these file exist, bash executes it rather then "~/.profile" when it is started as a login shell. (Bash will prefer "~/.bash_profile" to "~/.bash_login"). However, these files won't influence a graphical session by default.

以上是ubuntu官网给出的关于~/.bash_profile 和 ~./bash_login 的说明,翻译为中文:

~/.bash_profile 或 ~./bash_login -

如果有其中的一个文件存在的话, 当启动的是一个 登录shell时,Bash 会执行该文件而不会执行~/.profile ;

如果两个文件都存在的话,Bash 将会优先执行~/.bash_profile 而不是~/.bash_login ;

然而, 默认情况下,这些文件不会影响图形会话

~/.bash_logout

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

注意:Linux系统使用 $VARIABLE_NAME 访问环境变量,多个环境变量之间使用 : 分隔,Windows系统使用 %VARIABLE_NAME% 访问环境变量,多个环境变量之间使用 ; 分隔。

一般情况下,Linux加载环境变量配置文件的执行顺序为:

==> /etc/profile==> ~/.bash_profile | ~/.bash_login | ~/.profile==> ~/.bashrc==> /etc/bashrc==> ~/.bash_logout

到此这篇关于浅谈Linux环境变量文件介绍的文章就介绍到这了,更多相关Linux环境变量文件内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

有几种方法:1、重新登录;2、重启机器;3、使用source命令,如:#soure.bash_profile就可以直接让环境变量的修改生效了。4、使用点号也可以让环境变量生效,如:#.bash_profile“.”命令是soure命令的缩写内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • linux下配置jdk环境变量的三种方法总结
  • linux环境变量配置的完整攻略
  • 浅析linux环境变量export命令详解
  • 配置java环境变量(linux mac windows7)
  • linux下java环境变量的安装与配置
  • linux系统 java环境变量的配置方法
  • 在linux操作系统中修改环境变量的方法
  • linux中修改环境变量及生效方法
  • linux中环境变量配置的步骤详解
  • linux删除环境变量步骤详解
  • linux centos 7.0中java安装与配置环境变量的步骤详解
  • 详解 mac/linux vi配置环境变量及java环境变量配置
  • 类linux环境安装jdk1.8及环境变量配置详解
  • 安装linux的flash的步骤方法
  • 详细介绍通过配置apache实现404页面替换
  • linux下查看已经安装的jdk 并卸载jdk的方法(推荐)
  • ubuntu18.04 linux系统安装jdk与mysql的方法
  • ubuntu server 16.04 lts 上安装 lamp图解教程
  • ubuntu下迁移home目录至新的分区教程详解
  • linux(centos7)搭建svn服务器的思路
  • 手把手教你启用win10的linux子系统(图文超详细)
  • linux cd的含义以及用法
  • 详解linux下nginx+tomcat整合的安装与配置
  • Linux下如何使环境变量文件生效
  • linux中环境变量的设置和makefile文件的编辑,最好能详细一点的资料,谢谢!
  • 请问linux 中如何设置环境变量?在哪个文件下可以查看该环境变量。
  • linux怎样设置环境变量配置文件
  • 如何统计Linux环境变量中各个目录下的文件数
  • linux 中环境变量在哪个文件
  • Linux配置用户本身的环境变量的文件是哪个?
  • linux 环境变量和配置文件都能起到配置作用,一般什么时候用环境变量什么时候用配置文件
  • Linux下如何使环境变量文件生效?
  • linux下使环境变量立即生效的几种方法
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全星外虚拟主机华众虚拟主机linuxwin服务器ftp服务器dns服务器tomcat nginxzabbix云和虚拟化服务器其它首页服务器linuxlinux下配置jdk环境变量的三种方法总结linux环境变量配置的完整攻略浅析linux环境变量export命令详解配置java环境变量(linux mac windows7)linux下java环境变量的安装与配置linux系统 java环境变量的配置方法在linux操作系统中修改环境变量的方法linux中修改环境变量及生效方法linux中环境变量配置的步骤详解linux删除环境变量步骤详解linux centos 7.0中java安装与配置环境变量的步骤详解详解 mac/linux vi配置环境变量及java环境变量配置类linux环境安装jdk1.8及环境变量配置详解安装linux的flash的步骤方法详细介绍通过配置apache实现404页面替换linux下查看已经安装的jdk 并卸载jdk的方法(推荐)ubuntu18.04 linux系统安装jdk与mysql的方法ubuntu server 16.04 lts 上安装 lamp图解教程ubuntu下迁移home目录至新的分区教程详解linux(centos7)搭建svn服务器的思路手把手教你启用win10的linux子系统(图文超详细)linux cd的含义以及用法详解linux下nginx+tomcat整合的安装与配置apache开启.htaccess及.htaccessservice temporarily unavailabllinux下实现免密码登录(超详细)apache rewrite url重定向功能的linux下用cron定时执行任务的方法apache性能测试工具ab使用详解centos 6.4安装配置lamp服务器(a阿里云服务器ping不通解决办法(centos+nginx+php+mysql详细配置apache you don""t have permiss让apache支持shtml实现include文件解析的linux系统扩容根目录磁盘空间的操作方法linux中高并发socket最大连接数的优化详解linux (ubuntu 18.04) 下安装vim编辑器的lumanager vps主机控制面板安装和eduvps免linux网络搭建基础实验(1)修改.htaccess实现301域名重定向示例分享apache 局域网访问配置方案centos 7.2.1511 编译安装nginx1.10.1+my阿里云服务器centos 6.3下快速安装部署 l
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved