分享一下我老师大神的人工智能教程!零基础,通俗易懂!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的变量,但是在使用的过程中已经约定俗成,具有特定的含义。包括下面:
- BASH:显示当前shell的路径,例如/usr/bin/bash
- COLUMNS:显示的列数
- EDITOR:text editor的路径
- LINES:显示的行数
- SHELL:显示login时所使用的shell的路径,例如/bin/bash,和BASH一般来讲是一样的。
- 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
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e19ffb3303a490d20ea5d00dd397156.gif)