摘要:主要记录一些关于变量、环境变量的概念、还有子程序、以及个人设置文件的加载顺序。注意掌握两个重要命令: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命令将一个变量转换成环境变量的时候、那么就会在整个环境中可以使用这个变量(在这个终端中有效、当开启一个新的终端则无效、有点像浏览器的session)。 前面也说过export不加任何参数是将所有自定义变量和环境变量显示出来、这里不再演示、可以自己看一下。 1.5.2 source命令:当我们将环境变量追加到文件中之后、需要重新加载此文件、新修改的东西才能生效、但是我们可以使用source + 被修改文件或者 . + 被修改文件。这样新修改的文件可以立即生效。 记得动系统文件之前一定要备份!要不然一不小心系统文件没了、崩了就只能重装了。。。 exp: cp/etc/profile /etc/profile.bak echoname=andyChen >> /etc/profile source/etc/profile 《——也可以使用 . /etc/profile 代替 echo$name1.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 ~/.bashrc4.2.2 测试命令 test_user_2@ubuntu:~$ echo $TUV test_user_tmp_var test_user_2@ubuntu:~$ exit exit root@ubuntu:~# echo $TUV
|