科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道推荐:从初期化文件谈Linux的Shell (1)

推荐:从初期化文件谈Linux的Shell (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文主要解说BASH的ShellScript,用户LOGIN,端末软件启动等时的初期化文件和各个文件读入的顺序,并且将对初期化文件的内容进行详细的解说。

作者:doorsir 来源:赛迪网技术社区 2007年10月16日

关键字: 操作系统 文件 shell Linux

  • 评论
  • 分享微博
  • 分享邮件
 

一、前言:

本文主要解说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:]开始的行并表示。

在作为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涵数的定义,端末设定的变更等。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章