Linu学习笔记之——变量、环境变量

Linu学习笔记之——变量、环境变量

 

        摘要:主要记录一些关于变量、环境变量的概念、还有子程序、以及个人设置文件的加载顺序。注意掌握两个重要命令:export和source。

 

一:变量

 

        1.1、变量的概念、作用及获取:

 

                1.1.1 概念:

      

                        变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据

 

                1.1.2 作用:

 

                        就如概念所描述、我们可以使用一个简单的东西来标识一个频繁使用、并且臭长的设定或者保留数据、比如使用PATH来表示命令所在目录、这样我们就不用在执行某个命令之前还要先找到他、然后使用绝对路径来表示此命令并执行了。

 

                1.1.3获取:

      

                        a)       可以使用命令来显示:

                        echo $variableName

                        exp:

                        echo $PATH

                        则会显示$PATH所标识的内容:

                        /root/jdk1.7.0_51/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

                        多个值之间使用 “ : “分开、在Windows中使用”;”分开。

                        b)       可以使用env命令和set命令查看Linux中的环境变量

                        使用 set 除了会将系统的默认值显示出来之外,连带的所有的你自己设定的变量也会被显示出来!同时需要注意的是,若当时有相当多人同时在在线的话,那么你的变量只能给自己使用(除非改的是系统的预设参数档,如 /etc/profile ),而不会干扰到别人的!

 

        1.2、变量的设置规则


                1.2.1命令规则

 

                        a)     变量与变量内容以等号『=』来连结;

                        b)     等号两边不能直接接空格符;

                        c)     变量名称只能是英文字母与数字,但是数字不能是开头字符;

                        d)     若有空格符可以使用双引号『 " 』或单引号『 ' 』来将变量内容结合起来,但须要特别留意,双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符;

                        e)     必要时需要以跳脱字符『 \ 』来将特殊符号(如Enter, $, \, 空格符, '等)变成一般符号;

                        f)      在一串指令中,还需要藉由其它的指令提供的信息,可以使用 quote 『 ` command` 』;

                        g)     若该变量为扩增变量内容时,则需以双引号及 $变量名称如:『 "$PATH":/home』继续累加内容;

                        h)     若该变量需要在其它子程序执行,则需要以 export 来使变量可以动作,如『export PATH』;

                        i)       通常大写字符为系统预设变量,自行设定变量可以使用小写字符,方便判断(纯粹依照使用者兴趣与嗜好);

                        j)       取消变量的方法为:『unset 变量名称』。


                1.2.2示例

 

                        exp:

                        设置name为andyChen的变量

                        name=andyChen

                        设置name为andy chen的变量

                        name=andy\ chen
                        name=”andy chen”
                        name=’andy chen’

                        设置name为当前目录的变量 ` 是 Esc下面的一个按键。

                        name=`pwd`

                        一定要注意下面双引号与单引号的区别:

                        name="`pwd`"
                        name='`pwd`'

                        可使用echo $name查看结果对比

                        /root
                        `pwd`

                        使用echo获取上一个执行命令是否正确执行

                        echo$?

                        如果输出为 0 则为正确执行、否则为发生错误。

 

 

        1.3、子程序与程序

 

                在当前程序中使用命令: bash 则会进入子程序、再获取上面设置的变量:name 会发现为空。这就是变量的作用域的影响。在下面给出介绍。

 

        1.4、变量的作用域

      

                当你登录之后就获取了一个bash、所有的操作都是在这个bash中执行的、当再次执行bash命令的时候就会进入子程序、那么在上一个bash中设定的变量则在这里没有任何效果。

 

        1.5 相关命令


                        1.5.1 export命令:

 

                        export可以将一般自订的变量变成环境变量!当使用export命令将一个变量转换成环境变量的时候、那么就会在整个环境中可以使用这个变量(在这个终端中有效、还有一点要注意的是:在这个终端中如果切换用户时使用的命令是:su -l 也就是说同时切换到指定用户使用的shell环境中、这个时候export在此终端中设置的环境变量就会失效!、当开启一个新的终端则无效、有点像浏览器的session)。

                        前面也说过export不加任何参数是将所有自定义变量和环境变量显示出来、这里不再演示、可以自己看一下。

 

                1.5.2 source命令:

 

                        当我们将环境变量追加到文件中之后、需要重新加载此文件、新修改的东西才能生效、但是我们可以使用source + 被修改文件或者 . + 被修改文件。这样新修改的文件可以立即生效。

                记得动系统文件之前一定要备份!要不然一不小心系统文件没了、崩了就只能重装了。。。

                        exp:
                        cp/etc/profile /etc/profile.bak
                        echoname=andyChen >> /etc/profile
                        source/etc/profile 《——也可以使用 . /etc/profile 代替
                        echo$name

 

                1.5.3 unset命令

 

                        用于取消设定的变量:

                        unset name

 

二:环境变量

 

        2.1、环境变量的概念与作用

 

                相对于变量而言、环境变量多了一个环境两个字、很简单、就是意味着此变量可以在整个运行环境中存活和使用、整个运行环境就是一个终端界面、包括使用bash打开的子程序中也可以使用、但是不能在不同的终端时候、并且当把这个终端关闭之后、此环境变量也跟随着消失、除非是写在设置文件中、那么每次登录之后系统都会加载设置文件、也就配置文件里面将变量设置成环境变量、这样就不用每次手动设置就可以直接用了、比如PATH等重要变量、后面会有提到。

 

        2.2、环境变量的作用域

 

                未写入文件的:这个终端存活周期中都可以使用、只要终端关闭或者中断、则环境变量消失、

                写入文件的:每次启动都会将指定变量设置成环境变量、所以任何终端都可以使用。比如将NAME写入/etc/profile下面、这样所有人都可以使用这个环境变量、当然最好写入自己的设置文件中、这样就只有自己能使用、也避免了影响他人。

 

        2.3、变量转换成环境变量

 

                export name

 

三:变量相关配置文件及加载顺序

 

        3.1、几个配置文件简介

 

                3.1.1 系统设定值相关:

 

                        所谓的系统设定值,也就是说每个使用者进入到 bash shell 之后,会先读取的设定档案!预设的设定档案有下列几个:

                        a)   /etc/profile:这个档案设定了几个重要的变量,例如:『PATH、USER、MAIL、HOSTNAME、HISTSIZE、umask』等等,也同时规划出 /etc/inputrc 这个针对键盘热建设定的档案的数据内容。你可以在这里设定总体的 PATH 等等的信息!同时,这个 file 也规划出 /etc/profile.d 及 /etc/inputrc 这两个档案,其中, inputrc 是用在 history (历史指令)的作用上的!总之,你可以了解到刚刚我们学会的变量设定方式,在这个档案中也可以设定!但是设定上需要特别小心,因为所有的使用者皆会使用到这个档案的信息。 

                        b)   /etc/bashrc:这个档案在规划umask 的功能,也同时规划出提示字符的内容(就是PS1 !)。特别留意的是,这个档案在不同的 Linux distribution 里面,摆放的位置可能不太一样! 

                        c)   /etc/man.config:这个档案或许跟 bashshell 较没相关性,但是对于系统管理员来说,却也是很重要的一个档案!这的档案的内容『规范了使用 man 的时候, man page 的路径到哪里去寻找!

这就是系统在设定的时候常常会使用的档案!需要特别留意的是,通常设定完了这几个档案之后,都需要先 logout 在 login 之后才会将设定整个启动起来!

 

                3.1.2 个人设定值相关

 

                        个人设定值相关

                        个人是在个人家目录的几个隐藏文件当中!分别会使用到底下的几个档案! ( 注意!底下的档案都是隐藏档,需要使用 ls -al 方能显示出来 ) ,另外底下那个『 ~ 』代表的是『家目录』的意思:

                        a)  ~/.bash_profile:里面定义了个人化的路径(PATH)与环境变量的文件名称!你可以在这里修改你的个人路径!也可以在 ~/.bashrc 这个个人设定的变量里头修改!有的时候会有 ~/.profile 或 ~/.bash_login 等档案来取代这个档案! 

                        b)  ~/.bashrc:这个档案对于个人喜好的 bash 设定来说,是最重要的!因为这个文件会在最后被加载。 

                        c)  ~/.bash_history:这个档案的用途在于将你曾经使用过的命令记录下来,而当你再次的以上下键搜寻或者直接以 history 搜寻的时候,就可以找到曾经使用过的指令!需要注意的是在这一次的执行过程中的指令,将在你离开 shell 之后才会被纪录到这个档案中,否则将只会先被写到暂存内存中(Cache);可以藉由 history 这个指令来将里头的纪录搜寻出来;这个档案的指令记录笔数,与 HISTFILE 有关,你可以自行在 ~/.bashrc 里头设定,或者直接由 root 在 /etc/profile 里面统一设定大小! 

                        d)  ~/.bash_logout:这个档案则是在『你注销 shell 的时候, BASH 会为你所做的事情!』通常预设是只有 clear 清除屏幕这件事情而已,不过,你也可以将一些备份或者是其它你认为重要的工作写在这个档案中(例如清空暂存盘),那么当你离开 Linux 的时候,就可以解决一些自己想做的事情!

 

        3.2、加载顺序

 

                a)  先读取/etc/profile、再根据/etc/profile的内容去读取其他附加的设置文件、例如/etc/profile.d和/etc/inputrc等设置文件

                b)  根据不同用户、到用户家目录去读取~/.bash_profile或~/.bash_login或~/.profile等设置文件

                c)  根据不同用户、到用户家目录去读取~/.bashrc

                所以登录bash后、最终都会读取的设置文件是~/.bashrc、也就是说这个里面设置的变量都会被读取。

 

四:练习

 

        4.1 设定一个所有用户可以使用的环境变量

 

                4.1.1实现命令:

 

                        echoexport TMPVAR=tem_var >> /etc/profile
                        source/etc/profile    

 

                4.1.2 测试命令

 

                        echo $ TMPVAR
                        bash
                        echo $ TMPVAR
                        su test_user_2
                        echo $ TMPVAR

                        如果都输出:tem_var则表示成功。

 

        4.2设定一个只有一个用户可以使用的环境变量

 

                4.2.1实现命令:

 

                        root@ubuntu:~# su test_user_2
                        test_user_2@ubuntu:~$ echo exportTUV=test_user_tmp_var >> ~/.bashrc
                        test_user_2@ubuntu:~$ source ~/.bashrc

 

                4.2.2 测试命令

 

                        test_user_2@ubuntu:~$ echo $TUV
                        test_user_tmp_var
                        test_user_2@ubuntu:~$ exit
                        exit
                        root@ubuntu:~# echo $TUV


更多内容:Linux学习笔记之——起始篇


  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值