`
guoxinzz
  • 浏览: 430958 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

从初始化文件谈Linux系统的Shell编程

 
阅读更多

在作为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:]开始的行并表示。

分享到:
评论

相关推荐

    新版Linux Shell编程实训(全)20170518.docx

    13.2.1 初始化安装脚本编写 207 13.2.2 Mysql安装脚本的编写 209 13.2.3 PHP安装脚本的编写 211 13.2.4 Nginx安装脚本的编写 213 13.2.5 WordPress安装脚本的编写 214 13.2.6 验证wordpress 216 练习(每题50分,...

    Linux shell命令详解

    它最主要的功用都是解译使用者在命令列提示符号下输入的指令,Shell 的另一个重要功用是提供个人化的使用者环境,这通常在 shell 的初始化档案中完成(.profile、.login、.cshrc、.tcshrc 等等)。这些档案包括了...

    LINUX从入门到精通

    主要内容包括Linux操作系统的基础知识,基本命令介绍,用户以及用户信息的安全管理,系统初始化和系统故障处理,系统磁盘及文件系统,系统安全和性能管理,系统网络管理,Bash Shell编程简介,以及Linux服务器的搭建...

    shell:《 C语言实现Linux Shell命令解释器》项目可以学习Linux系统编程能力,尤其是在多进程方面。可以了解到fork,execvp等重要的系统调用。另外可以深入理解Linux Shell的功能的实现手段。

    exev)信号的概念及系统调用1.2效果截图1.3设计流程二,主要函数的设计首先,以自顶向下的方式探索一下Linux Shell的周期内部主要做了什么事:初始化:在这一步,一个典型的Shell应该重新配置文件并执行配置功能。...

    2010-2011华南理工大学操作系统课程设计(完整源代码和详细文档)

    copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝,host文件系统的文件命名为…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟...

    linux操作系统培训资料.pptx

    linux内核在进行必要的初始化设置工作和挂载根文件系统之后,会启动文件系统中的一个程序作为系统中的第一个进程,这个进程就是大名鼎鼎的init进程,init进程会,然后运行etc目录下的对应的shell脚本文件。 linux...

    shell编程和lunix命令

    当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shell(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行...

    Linux高级bash编程

    为什么使用shell编程 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量赋值 4.3. Bash变量是...

    Shell脚本专家指南

    36.1 脚本初始化 36.2 开始处理 36.3 确定口令年龄 第37章 伪shadow文件 第38章 搭建Linux金系统 第39章 系统快照 39.1 快照脚本 39.2 快照升级 39.3 创建最新快照 39.4 最后的想法 第40章 删除大文件和日志滚动 第...

    LPI Linux认证权威指南(第三版,en)

    引导、初始化、关闭和运行层次;文档以及管理任 务。 第二部分针对102考试, 包括: 硬件和体系结构; Linux安装和包管理; Linux 内核;文本编辑、处理和打印;shell、脚本编辑、编程和编译;X Window 系统;网络...

    Linux程序设计中文第4版.part2

     2.1 为什么使用shell编程  2.2 一点哲学  2.3 什么是shell  2.4 管道和重定向  2.4.1 重定向输出  2.4.2 重定向输入  2.4.3 管道  2.5 作为程序设计语言的shell  2.5.1 交互式程序  ...

    Linux程序设计中文第4版.part1

     2.1 为什么使用shell编程  2.2 一点哲学  2.3 什么是shell  2.4 管道和重定向  2.4.1 重定向输出  2.4.2 重定向输入  2.4.3 管道  2.5 作为程序设计语言的shell  2.5.1 交互式程序  2.5.2 创建...

    Linux程序设计中文第4版.part3

     2.1 为什么使用shell编程  2.2 一点哲学  2.3 什么是shell  2.4 管道和重定向  2.4.1 重定向输出  2.4.2 重定向输入  2.4.3 管道  2.5 作为程序设计语言的shell  2.5.1 交互式程序  ...

    操作系统实验

    Shell的基本功能是:命令解释执行、shell编程、系统环境设置、文件名替换、I/O重定向、连通管道建立。试按照shell程序的基本功能,利用UNIX系统提供的进程控制的系统调用,设计一个程序来模拟shell功能。要求至少要...

    RED HAT LINUX 6大全

    6.2 初始化进程和启动脚本 90 6.2.1 init和/etc/inittab 90 6.2.2 /etc/inittab和系统状态 92 6.3 linuxconf与管理服务 96 6.4 关闭Linux系统 98 6.4.1 shutdown 98 6.4.2 halt与reboot 99 6.5 当系统崩溃时 100 ...

    史上最强的嵌入式底层驱动开发课程 Linux系统开发+Linux高级程序+主板开发+ARM等

    ├<1 Linux操作系统基础> │ ├01 - 说在前面的话1.mp4 │ ├02 - 说在前面的话2.mp4 │ ├03 - 说在前面的话3.mp4 │ ├04 - 说在前面的话4.mp4 │ ├05 - 计算机组成原理概述1 .mp4 │ ├06 - 计算机组成原理概述2...

    Linux C程序设计大全

    1.2.6 Linux在嵌入式系统方面的发展 1.2.7 Linux在桌面系统方面的发展 1.3 Linux环境下的其他编程语言 1.3.1 C++ 1.3.2 Java 1.3.3 Perl 1.3.4 Python 1.3.5 Ruby 1.3.6 PHP 第2章 控制结构 2.1 goto语句 2.1.1 ...

    Linux程序设计 第4版.haozip01

    2.1 为什么使用shell编程 15 2.2 一点哲学 16 2.3 什么是shell 16 2.4 管道和重定向 18 2.4.1 重定向输出 18 2.4.2 重定向输入 19 .2.4.3 管道 19 2.5 作为程序设计语言的shell 20 2.5.1 交互式程序 20 ...

    Linux程序设计 第4版.haozip02

    2.1 为什么使用shell编程 15 2.2 一点哲学 16 2.3 什么是shell 16 2.4 管道和重定向 18 2.4.1 重定向输出 18 2.4.2 重定向输入 19 .2.4.3 管道 19 2.5 作为程序设计语言的shell 20 2.5.1 交互式程序 20 ...

    LINUX 24学时教程

    4.2 浏览及搜索文件系统 48 4.2.1 使用cd命令进入不同的目录 48 4.2.2 使用pwd命令查看自己所在的位置 48 4.2.3 使用find命令在子目录中搜索 匹配的文件 49 4.2.4 使用whereis命令查找文件 50 4.2.5 使用locate命令...

Global site tag (gtag.js) - Google Analytics