Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1452571
  • 博文数量: 150
  • 博客积分: 65
  • 博客等级: 民兵
  • 技术积分: 3415
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 10:30
个人简介

游戏后台开发

文章分类

全部博文(150)

文章存档

2020年(1)

2019年(4)

2017年(3)

2016年(6)

2015年(4)

2014年(45)

2013年(86)

2012年(1)

分类: LINUX

2013-08-22 11:15:29

一、什么是变量
   在shell中有一个重要的概念,就是变量,顾名思义,变量就是变动的值,就是以特定的字符串来表示一个不定的内容。
   比如说我们用PWD命令查看当前目录,我们可能一致在切换文件夹,但是PWD却能正确显示我们所在的目录。
   再比如我们以不同身份登录系统的时候,系统怎么知道我是哪个用户,有什么权限,这都是和一个叫UID的变量息息相关的。

二、变量分类
   变量分为环境变量和shell变量
   环境变量相当于全局变量,适用于当前SHELL(父进程)和由父进程调用的子进程,如打开编辑器vi、脚本、应用或是再打开一个子shell。
   shell变量就是当前shell使用的变量了,它只是“本地“有效,相当于本地变量,不适用于其他子进程,只在当前shell生命周期内有效

三、变量相关的命令
   既然变量这么重要,那我们怎么去增、删、改、查呢?
   查看:
       env 查看环境变量
       set 查看shell变量和环境变量
       echo $变量名 查看某个特定的变量,如echo $LANG就可以查看当前系统的语系编码
       export 查看已经转换成环境变量的SHELL变量
   增加:
       1、变量名=不定值,如LANG=zh_CN.utf8
       2、export 变量名=“不定值”,如export LANG="zh_CN.utf8",这样就直接变成环境变量了
   删除:unset 变量名,如unset LANG,LANG就失去了变量的身份,echo LANG就没有内容了
   转换:export 变量名,将shell变量转变成环境变量
   只读:readonly 变量名,如readonly LANG,那么后面再修改LANG的值或是删除就不被允许了,那只好注销了。
   这些是一些比较重要的指令,其他指令请参考google和man

四、login shell 和 no-login shell
      为什么提这两个?他们又是什么?
      这对第五段的永久变量和临时变量的设置很有帮助。
      login shell就是使用之前我们还需要输入帐号密码,比如我们使用tty1~tty6登入时。
      no-login shell当然就是不用登入了,比如我们用图形化进入系统后直接点开终端程序或者在shell里直接输入bash命令。
      login shell使用时要加载的大致步骤如下:
    第一步:载入全局配置文件
     /etc/profile 对所有用户有效,修改后使用source /etc/profile使其立即生效
     /etc/inputrc 自定义案件输入功能,由profile调入
     /etc/profile.d/*sh 各种其他设置:语言、VIM、颜色,由profile调入
     /etc/sysconfig/i18n,由上一个文件夹中的/etc/profile.d/lang.sh调入
   第二步:载入个人配置文件
     ~/.bash_profile 只对login shell有效,对当前用户有效,也必须用souce导入
     调用~/.bashrc,其作用是个人指令别名和调用/etc/bashrc
     而/etc/bashrc的作用有:根据UID得到umask和PS1的值,然后去调用/etc/profile.d/*sh中其他各项设置
     ~/.bash_login
     ~/.profile
     这三者是以以上顺序执行,若成功则不往下走
   no-longin shell只会读取~/.bashrc.
    如果不小心删除了这个文件,进入BASH后的提示值就变成bash-4.1$,4.1应该是bash版本号。
   只需要把/etc/skel/.bashrc拷贝一份过来,然后使用source命令或重启SHELL即可生效
   当然上面这些是登录SHELL时比较重要的配置文件,还有其他配置文件和其有关系,例如:
   ~/.bash_history 历史指令
   ~/.bash_logout  退出时要执行的任务

五、永久变量和临时变量
   由上面的内容可知,不管是自定义的变量还是通过export导为环境变量的自定义变量都只是在shell生命周期内有效,这样的变量就是临时变量,如果我想设置一个变量使其永久生效怎么办呢?
   根据第四段的分析可以修改两个配置文件:/etc/profile和~/.bashrc,前者对所有用户有效,后者只对当前用户有效。添加的内容详见第三段。

阅读(1781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~