设为首页 收藏本站
查看: 1127|回复: 0

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

[复制链接]

尚未签到

发表于 2015-10-26 10:58:30 | 显示全部楼层 |阅读模式
续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。如果将某个变量定义为环境变量,先是定义,然后exportvar_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操作相关文章

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-130895-1-1.html 上篇帖子: shell语法简介 下篇帖子: shell编写
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表