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

9_Shell语言———bash的配置文件

[复制链接]

尚未签到

发表于 2018-8-30 08:17:13 | 显示全部楼层 |阅读模式
  不同的使用者对程序的需求不同,这就决定了要为用户提供配置环境的接口。通常情况下这类配置使用环境的文件是文本文件,常见的有xml,json,soap等。
  bash的配置文件用来配置bash的使用环境。前文中提过,查看环境变量的命令有:printenv、export、set、env等。bash的环境变量常见的有:PATH: 命令搜索路径;HISTFILE:命令历史的保存位置;SHELL:当前用户使用的shell;HOME:当前用户的家目录。
  在打开终端后,我们能看见命令提示符前面的字符串:[root@localhost ~]#,事实上这个字符串也是由环境变量决定的,即PS1,可以使用set命令查看:
  # set
DSC0000.jpg

  bash为PS1提供了很多宏。宏和变量类似,但不完全等同于变量,PS1中使用的宏有: \u:当前用户的用户名
  \h:当前主机的主机名第一段
  \W:当前工作的目录的基名
  \!:当前命令在命令历史中是第几条
  \#:当前命令是命令中的第几条  // 命令历史可保存到下次开机,
  // 当前命令关机即结束
  更多的PS1宏可以通过man bash来查找:
  # man bash
  /PS1
  n
DSC0001.jpg

  PS1可以由我们自行指定,例如要显示当前的时间、当前命令在命令历史中是第几条,可进行以下设置:
  # export PS1=’\t \!\$’
DSC0002.jpg

  上述例子中可以看到,bash的环境变量作用范围是有限的,当切换至centos用户后,promt又还原了。环境变量的作用范围是由bash配置文件的类别决定的。
  bash配置文件的类别主要有:
  profile类:主要用于交互式登录的用户。所谓交互式登陆的用户,包括以下两种:
  1.直接从终端登录的用户
  2.使用 su - USERNAME 或 su -l USERNAME 登陆的用户
  属于profile类的文件主要有:
  /etc/profile: 应用全局,即对所有的用户都有效
  /etc/profile.d/*.sh: 也是应用全局,对所有的用户都有效,是上一个文件的补
  充。如果profile文件过大,则需要将之切片,每一段分别存为一个.sh文件。
  --------------------------------只有管理员才有权限修改上述两个文件---------------------------------
  ~/.bash_profile:在每一个用户的家目录下都有这个文件,该配置仅对用户自   身有效——普通用户可对此文件任意修改。
  profile类的配置文件功能主要有:
  1. 设定环境变量
  2. 运行命令或脚本
  如果想让某用户登陆系统后,能看到“Welcome!User”的字样,且显示登陆系统的时间,就可以在其家目录下的bash_profile文件中增加一行echo脚本语句:
  # nano .bash_profile
  echo “It is $(date +%T). Welcome! $USER”
  再次登陆该用户就能看到欢迎语了
DSC0003.jpg

  bashrc类:非交互式登录的用户,非交互式登陆的用户主要有:
  1.使用 su USERNAME登陆的用户     //对比交互式: su - USERNAME
  2.在图形界面下打开的模拟终端(伪终端)
  3.自动执行的脚本。 在实际工作中运行自动执行的脚本如果出错,有可能是当前用户的配置文件有问题,因此写脚本时最好遵循一个原则——尽可能不依赖于当前用户环境。
  属于bashrc类的文件主要有:
  /etc/bashrc: 全局有效。
  ~/.bashrc:家目录下的配置文件,仅对用户自身有效。
  bashrc类的配置文件功能主要有:
  1. 设定本地变量
  2. 定义命令的别名
  如何使用配置文件?
  首先举个例子,如果某用户想为某个命令设置别名,并让该别名永久有效,就可以编辑其家目录下的.bashrc文件:
  # nano .bashrc    // 增加一行 alias cls=clear后保存
DSC0004.jpg

  编辑的配置文件不会马上生效,需要重新登录才能生效,但它会永久有效。
  其他用户登陆了则没有效,因为.bashrc只对当前用户有效。如果要对全局有效,需要修改/etc/bashrc文件
DSC0005.jpg

  通常让环境变量生效的方式有两种:
  1.重新登录;
  2.使用source FILE命令将刚才编辑过的文件读取一遍。
  3.使用source命令的同名命令 . FILE 也可以达到相同的效果
  例如为当前Linux系统安装jdk后,为jdk配置环境变量,且该环境变量对全局有效,可以进行如下操作:
  # nano /etc/profile.d/java.sh            //在/etc/profile.d下新建一个jdk的配置文件
  export JAVA_HOME=/usr/java/latest    //在nano中编辑此项
  # echo $JAVA_HOME                        //此时会发现没有生效
  # . /etc/profile.d/java.sh                //也可以使用 source /etc/profile.d/java.sh
  # echo $JAVA_HOME                        //这时发现jdk的环境变量已经生效了
DSC0006.jpg

  注意普通用户在定义环境变量时,不能删除原来的值而定义到其他目录下,如不能写成export PATH=/root这种形式,这样会导致命令无法执行。正确的做法是在原有的路径前面或后面加上新路径,即:export PATH=$PATH:/root
DSC0007.jpg

  注意,这样定义的PATH只对当前用户有效,想要永久保存这个PATH,需要修改bash的配置文件:
  # nano /etc/profile
  PATH=$PATH:/root
  # echo $PATH
DSC0008.jpg

  通常情况下不建议设置全局变量,因为全局变量对所有的用户都有效。
  bash配置文件的加载顺序:
  先来考虑一种情况,如果/etc/profile 文件中定义了一个变量,同时 /etc/profile.d/*.sh中也定义了一个变量,且两个变量名一样,但是值不一样,这样就会发生冲突。那么在读取配置文件时以哪一个为准呢?其标准是后读取的文件,为最终生效的文件。
  对于交互式登录的用户,读取次序为:
  ① /etc/profile —>② /etc/profile.d/*.sh —>③ ~/.bash_profile —>④ ~/.bashrc —>⑤ /etc/bashrc
  对于非交互式登录的用户,读取次序为:
  ①~/.bashrc—>②/etc/bashrc—>③/etc/profile.d/*.sh


运维网声明 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-558671-1-1.html 上篇帖子: shell 正则表达式 下篇帖子: Linux之部分shell脚本练习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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