分享
 
 
 

从初始化文件谈LINUX的SHELL

王朝system·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

引自 http://www.linuxforum.net/docnew/showthreaded.php?Cat=&Board=sys&Number=6&page=0&view=collapsed&sb=9&o=all&fpart=

作者: "t1601045" <t1601045@iwate-u.ac.jp> 于 Jan 19, 2002

一,前言:

本文主要解说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涵数的定义,端末设定的变更等。

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比较合适。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有