发布时间:2014-09-05 17:42:25作者:知识屋
摘要:主要记录一些关于变量、环境变量的概念、还有子程序、以及个人设置文件的加载顺序。注意掌握两个重要命令:export和source。
变量就是以一组文字或符号等,来取代一些设定或者是一串保留的数据
就如概念所描述、我们可以使用一个简单的东西来标识一个频繁使用、并且臭长的设定或者保留数据、比如使用PATH来表示命令所在目录、这样我们就不用在执行某个命令之前还要先找到他、然后使用绝对路径来表示此命令并执行了。
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命令规则
a) 变量与变量内容以等号『=』来连结;
b) 等号两边不能直接接空格符;
c) 变量名称只能是英文字母与数字,但是数字不能是开头字符;
d) 若有空格符可以使用双引号『 " 』或单引号『 ' 』来将变量内容结合起来,但须要特别留意,双引号内的特殊字符可以保有变量特性,但是单引号内的特殊字符则仅为一般字符;
e) 必要时需要以跳脱字符『 / 』来将特殊符号(如Enter, $, /, 空格符, '等)变成一般符号;
f) 在一串指令中,还需要藉由其它的指令提供的信息,可以使用 quote 『 ` command` 』;
g) 若该变量为扩增变量内容时,则需以双引号及 $变量名称如:『 "$PATH":/home』继续累加内容;
h) 若该变量需要在其它子程序执行,则需要以 export 来使变量可以动作,如『export PATH』;
i) 通常大写字符为系统预设变量,自行设定变量可以使用小写字符,方便判断(纯粹依照使用者兴趣与嗜好);
j) 取消变量的方法为:『unset 变量名称』。
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 则为正确执行、否则为发生错误。
在当前程序中使用命令: bash 则会进入子程序、再获取上面设置的变量:name 会发现为空。这就是变量的作用域的影响。在下面给出介绍。
当你登录之后就获取了一个bash、所有的操作都是在这个bash中执行的、当再次执行bash命令的时候就会进入子程序、那么在上一个bash中设定的变量则在这里没有任何效果。
export可以将一般自订的变量变成环境变量!当使用export命令将一个变量转换成环境变量的时候、那么就会在整个环境中可以使用这个变量(在这个终端中有效、当开启一个新的终端则无效、有点像浏览器的session)。
前面也说过export不加任何参数是将所有自定义变量和环境变量显示出来、这里不再演示、可以自己看一下。
当我们将环境变量追加到文件中之后、需要重新加载此文件、新修改的东西才能生效、但是我们可以使用source + 被修改文件或者 . + 被修改文件。这样新修改的文件可以立即生效。
记得动系统文件之前一定要备份!要不然一不小心系统文件没了、崩了就只能重装了。。。
exp: cp/etc/profile /etc/profile.bak echoname=andyChen >> /etc/profile source/etc/profile 《——也可以使用 . /etc/profile 代替 echo$name
用于取消设定的变量:
unset name
相对于变量而言、环境变量多了一个环境两个字、很简单、就是意味着此变量可以在整个运行环境中存活和使用、整个运行环境就是一个终端界面、包括使用bash打开的子程序中也可以使用、但是不能在不同的终端时候、并且当把这个终端关闭之后、此环境变量也跟随着消失、除非是写在设置文件中、那么每次登录之后系统都会加载设置文件、也就配置文件里面将变量设置成环境变量、这样就不用每次手动设置就可以直接用了、比如PATH等重要变量、后面会有提到。
未写入文件的:这个终端存活周期中都可以使用、只要终端关闭或者中断、则环境变量消失、
写入文件的:每次启动都会将指定变量设置成环境变量、所以任何终端都可以使用。比如将NAME写入/etc/profile下面、这样所有人都可以使用这个环境变量、当然最好写入自己的设置文件中、这样就只有自己能使用、也避免了影响他人。
export name
所谓的系统设定值,也就是说每个使用者进入到 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 之后才会将设定整个启动起来!
个人设定值相关
个人是在个人家目录的几个隐藏文件当中!分别会使用到底下的几个档案! ( 注意!底下的档案都是隐藏档,需要使用 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 的时候,就可以解决一些自己想做的事情!
a) 先读取/etc/profile、再根据/etc/profile的内容去读取其他附加的设置文件、例如/etc/profile.d和/etc/inputrc等设置文件
b) 根据不同用户、到用户家目录去读取~/.bash_profile或~/.bash_login或~/.profile等设置文件
c) 根据不同用户、到用户家目录去读取~/.bashrc
所以登录bash后、最终都会读取的设置文件是~/.bashrc、也就是说这个里面设置的变量都会被读取。
echoexport TMPVAR=tem_var >> /etc/profile source/etc/profile
echo $ TMPVAR bash echo $ TMPVAR su test_user_2 echo $ TMPVAR
如果都输出:tem_var则表示成功。
root@ubuntu:~# su test_user_2 test_user_2@ubuntu:~$ echo exportTUV=test_user_tmp_var >> ~/.bashrc test_user_2@ubuntu:~$ source ~/.bashrc
test_user_2@ubuntu:~$ echo $TUV test_user_tmp_var test_user_2@ubuntu:~$ exit exit root@ubuntu:~# echo $TUV
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能