Linux Bash Shell学习(六) 设置环境参数

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

Linux Bash学习(五):特殊文件、别名、选项和参数

 

  本文也即《Learning the bash Shell》3rd Edition的第三章Customizing Your Environment之读书笔记二,但我们将不限于此。设置一个好的用户环境,对我们开发是非常关键的。在这一章节中,从四个方面进行介绍:特别的文件,别名,选项,参数。上回学习到参数设定的部分。继续……

参数设定

命令查找路径

  PATH存储命令查找文件,可以用echo $PATH来查看。命令都是执行文件,它所在的目录如果不在PATH内,在执行的时候必须指出文件所在目录。PATH里面可包含多个文件目录,之间用“:”来分割,例如/bin:/usr/bin:/usr/local/bin:/usr/X386/bin。它们是由先后顺序的,我们敲入一个命令,将按顺序进行查找,直至找到。

  有一些命令是已经编译在Linux中的,例如cd,echo,这些命令不是通过文件执行的命令。我们有时需要增加这些路径,例如我们将一些执行文件放入~/bin中,我们希望登录的时候能够直接运行,而不需要指出路径。我们在.bash_profile文件的最后加入PATH=$PATH:/home/wei/bin,请注意这里的顺序,为了避免我们自己目录下的命令干扰系统命令(同时也可能引起系统安全隐患),我们一般都将新增的路径放置最后。如果发生冲突,而我们希望使用放置在后面目录的命令,在执行是需要执行路径,例如在~/bin/more,这个命令和系统命令冲突,在执行时使用$~/bin/more

命令hashing

  为了提高在PATH路径中查询命令的速度,Linux采用了命令hashing的方式。当shell在PATH中找到一个命令时,将这个命令放入哈希表。当再次使用命令时,将先在哈希表中进行查询,可以用hash命令来查看当前的哈希表,里面不仅包括命令的完整路径,还包括在本次login中使用的次数。可以用hash -r来清除整个哈希表,用-d来删除某个命令,用-p来加入某个命令(即使这个命令不存在)。在环境中可以通过hashall的set来设置on或者off,但是我们没有必要去修改它。

目录查询路径

  在cd命令的使用,如果非绝对路径,会在当前路径开始查询,可以设置CDPATH来制定cd命令的查询路径。格式和PATH类似,使用“:”作为分割,并具有前后先后顺序。例如我们设置CDPATH=:~/mybook,注意不允许路径以”/”开头,也不允许以”./“”../“开头。在上面例子中,我们敲入cd doc,现在当前目录查找,如果没有则接着在~/mybook下查找doc目录。一般来讲,如果有一个目录我们清楚去,我们通常将这个目录设置为某个变量,例如 mydir=~/myproject/mylearning/,然后通过cd mydir来进入,而不采用CDPATH的方式。

其他参数

  除了前面介绍的参数外,还有很多其他的参数,下面一些比较常见。

HOME:用户home目录      
SECONDS:shell被invoke的时间间隔。      
BASH:当前使用的bash的路径      
BASH_VERSION:shell的版本,例如我使用的cygwin的版本是3.2.49(22)-release      
BASH_VERSINFO:当前使用shell的主版本信息。例如我的版本是3      
PWD:当前路径      
OLDPWD:上次cd前的路径。

  这几个参数用于获取数值,没有案例用于设置。

用户环境

变量

  之前所讲的参数其实也是环境变量,例如HOME,MAIL,PATH,PWD。如果将某个变量定义为环境变量,先是定义,然后export var_names,可以有多个变量的名字,可以与之前的赋值合一,放置为:export var_name=value

有时候我们子希望某个变量值只在某个子进程中起作用,可以使用var_name=value command的方式。通常变量的定义可以在命令的任何部分,而不只限于开头。

  有一些不是build-in的变量,但是在使用的过程中已经约定俗成,具有特定的含义。包括下面:

  1. BASH:显示当前shell的路径,例如/usr/bin/bash
  2. COLUMNS:显示的列数
  3. EDITOR:text editor的路径
  4. LINES:显示的行数
  5. SHELL:显示login时所使用的shell的路径,例如/bin/bash,和BASH一般来讲是一样的。
  6. TERM:当前teminal的类型,例如cygwin

  这些有些已经成为我们的环境变量,有些是在/etc/profile设定的全局变量,我们也可以在.bash_profile中定义我们自己的。

在Linux中有个专门记录用户环境变量的文件~/.bashrc,如果我们需要使用这个文件,需要在.bash_profile中加入source .bashrc,以保证在login的时候这些环境起效果。我们也可以在.bash_profile中设置,但是一般建议是将OPTIONS和alias放置在.bashrc中,而如果是少量的定义放置在.bash_profile,如果是大量变量的定义考虑放置在.bashrc中。

文件的修订

  当我们修改.bash_profile,.bashrc当然可以使用vi等editor的方式,但是我们也可以简单实用echo,将所需要的设置附加在文件的最后,例如我们要设置PS1="/u /!—> ",我们需要将其加在.bash_profile的最后,使用

$ echo 'PS1="/u /!--> " ' >> ~/.bash_profile

  注意这里使用了单引号,这是为了避免里面有$或者”或者其他所带来的意义的变化。>>表示附加在文件的最后,而>表示则覆盖整个文件。

相关链接:我的Linux操作相关文章

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值