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

[经验分享] 从初始化文件谈Linux系统的Shell编程

[复制链接]

尚未签到

发表于 2016-3-11 12:25:36 | 显示全部楼层 |阅读模式

  
  在作为LoginShell的Bash启动之后,两个文件会被连续读入,由LoginShell解释实行。开始是全用户共通的初期化文件[/etc/profile],接着是各用户根目录下的[.bash_profile]Linux安装之后,多数情况下会在各用户根目录下设置.bash_profile文件,自己的根目录下有没有此文件,用[ls -a] 确认,如果没有的话,Bash将如何处理请参照本节的附录。
  /etc/profile,.bash_profile之中典型的处理内容是:PATH,USER等重要的环境变数的设定,程序异常终了时croe文件的大小的限制,新建文件的读写属性等。具体的/etc/profile,.bash_profile文件的内容在后面将详细介绍。
  3.2 二级Shell利用的初期化文件
  像X Window System的 kterm等软件启动时启动的Shell,由于也可以接受用户的命令,所以也叫对话式Shell当二级对话式Shell启动时,会自动读入用户根目录下的.bashrc,由调用的Shell解释并执行。一般地说,全用户共通的设定记述在/etc/bashrc中,但/etc/bashrc不能被自动读入,必须由.bashrc指示才能被读入。具体的可以用Bash的source命令或[.]实现,如在.bashrc中做如下记述:
1: if [ -f /etc/bashrc ]; then
2: . /etc/bashrc
3: fi
  注:"-f" 是文件是否存在的判断条件。
  /etc/bashrc,.bashrc之中典型的处理内容是:一般环境变数的设定,组合变数[PSI]的设定,别名的定义,Shell涵数的定义,端末设定的变更等。
  3.3 两种初期化文件的合理的分别利用
  在各用户的根目录下有两个初期化文件:.bash_profile和.bashrc,如果相同的内容在两个文件中都写的话,就会造成不必要的重复和修改上的麻烦,如何才能合理的分别使用呢,基本原则是:
  *在.bashrc中不会发生冲突的尽量在.bashrc中记述,从.bash_profile中唤起.bashrc。
  *Login时执行一次就行的命令和二级对话式Shell启动时反复执行会发生坏影响的命令在 .bash_profile 中记述,在.bash_profile中唤起.bashrc。的方法和从.bashrc读入/etc/bashrc 的方法一样,在.bash_profile中做如下记述:

1: if [ -f ~/.bashrc ]; then
2: . ~/bashrc
3: fi
  附录:
  .bash_login 和.profile 如果用户根目录下没有.bash_profile文件时,Bash会在根目录下查找 .bash_login,如果 .bash_login 不存在的话,Bash会在根目录下继续查找.profile文件。 其实,这些文件都是从 C shell(.login), Bourne shell (.profile)来的,都是只有LoginShell利用的初期化文件。不同的是,.profile是Bourne shell 和Bash 都可以利用的初期化文件。从各初期化文件分开使用的方面来看,设置一个Bash 专用的.bash_profile比较合适。
  一、前言:
  本文主要解说BASH的ShellScript,用户LOGIN,端末软件启动等时的初期化文件和各个文件读入的顺序,并且将对初期化文件的内容进行详细的解说。
  二、概述:
  Linux的标准Shell是Bash,Bash的作用并不仅仅是对ShellScript的解释和实行,并且在用户登录控制,Term等端末软件的命令行接受的命令进行处理等方面起着重要的作用。这样的Shell由于是接受用户的命令(键盘或其它)然后处理之后将结果显示在屏幕上,所以叫对话式(Interactive)Shell。
  像这样的对话式Shell可以对别名的定义,环境变数的设定等进行处理,还可以将端末的一些设定根据自己的爱好来改变,比如LS的颜色化表示,将自己的根目录变成%,#,在什么样的端末上都可以用BackSpace 键进行消除等。像这样的处理如果记述在初期化文件之中,在Shell启动时就可以自动执行,这些初期化文件可以放在 自己的根目录下根据自己的喜好定制,当然,一些共通的设定可以放在全用户共痛的初期化文件中。
  如果你想将你的Linux设定成适合自己使用的话(这可是Linux的长处),你一定要对Linux的各种初期 化文件的处理顺序,各个文件的不同作用等有一定的了解,本文将对此进行详细的解说。
  三、SHELL利用的各种初期化文件
  Shell启动时处理的初期化文件大致可分为两类,用户LOGIN时启动的LoginShell和别的文件启动时被 唤醒的二级SHELL。初期化文件的内容全部是用ShellScript写成的,在Shell启动时自动(或者由其它文件唤醒)读入,由Shell自身解释并实行,所以初期化文件的第一行必须是[#!/bin/sh]或[#!/bin/bash],并且不用加实行属性。
  本节将从以下几个方面进行详细解说:
  .LoginShell利用时的初期化文件
  .二级Shell利用的初期化文件
  .两种文件的合理的分别利用
  3.1 LoginShell利用时的初期化文件
  Login时,将用户名和密码输入之后,在[/etc/passwd]之中记述的Shell会被启动,LINUX的标准SHELL是Bash,如果想确认自己使用的是何种SHELL的话,在命令行输入

$ grep "^whoami:" /etc/passwd
  之后,结果是以分割开来的,第一段是用户名,最后一段就是自己的LoginShell啦。现在说明一下上面的命令,whoami 是对whoami实行之后的结果置换,也就是自己的用户名,[^]是正规表现的用法,表示以什么什么开始的意思。比如自己的用户名是[john],这条命令就是从文件[/etc/passwd]之中检索以[john:]开始的行并表示。

运维网声明 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.iyunv.com/thread-189412-1-1.html 上篇帖子: Linux下NFS服务器的配置 (一) 下篇帖子: Linux下删除卸载系统自带的MySQL数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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