文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Shell 的环境设定

Shell 的环境设定

时间:2008-05-04  来源:sdccf

 

Linux用户执行指令的指令列环境就是利用Shell做出来的。

控制电脑中枢的程式称为核心(Kernel),而Shell就是发挥使用者,指令群和核心之间界面的功能。

Shell有许多种类,在Linux主要是利用bash、tcsh、zsh等三种。我们虽只探讨bash,但是其他的shell也可同理加以类推,只有tcsh的环境变数设定法或函数等的文法较为不同。

◆ bash的设置文件

在bash设置文件中有/etc/profile 、~/.bash_profile 、~/.bashrc 、~/.inputrc 、~/.bash_logout,其各自被读取的时间也不同。

◆ ~/.bashrc和~/.bash_profile

在用户登入时,shell即被啟动。在bash的情形下,etc/profile会先被读取,接著再读取家目錄的 .bash_profile※。

另外,若非以登入shell来啟动的情形时,例如用指令列来启动bash,或是用su来变成別的使用者的情形下,家目錄的 .bashrc将被读取※。

然而,通常是 ~/.bashrc会在~/.bash_profile之前被读取,而且/etc/bashrc几乎会设定比~/.bashrc更早被读取。因此,可将“~bash的设定档”整理如下。

※【~/.bash_profile】无 .bash_profile的情形下为 .bash_login的话,,若是也无.bash—I则读取,profile。
※【.bashrc】一般以能读/etc/bashrc的方式来设定。



另外,当啟动在shellscript用的情形时,是读取以环境变数BASH_ENV所设定的文件。而BASH_ENV大多是设定~/.bashrc。

环境变数或別名等,成为使用者环境的基本设定是以 /etc/bashrc或 ~/.bashrc来执行。而/etc/profile或~/.bash_profile中,只执行登入时的处理,例如,执行mail的检查或资讯的显示,或记錄“登入用户”之环境变数设定。

◆ source指令

若於bash的设置文件內来读取別的设定文件的情形时,是使用source指令,source指令有时会写成「.」举例来說,在~/.bash_profile之中,来读取~/.bashrc的情形时,则是写成「.~/.bashrc」。

◆ ~/.inputrc

利用GNU readline用的设定档,设定编修指令列时的键盘操作。有的Linux会使用/etc/inputrc。

◆ ~/.bash_logout

写有logout时所执行的內容文件。例如,刪除历史记录或是作业目录。

◆ /etc/skel目录

配置於家目录的设定档不单是只有shell的设定档。还有编辑器、X相关的设定文件等各种设定文件。

若想要加入新用户时,则复制於家目錄底下的初始档都储存於/etc/skel目录里。若想改变用户的初始值时,只要改变/etc/skel里的文件即可。但是对於已存在的用户则必须个別的去改变设定。

Colunm 登入Shell
shell只有在从登入的命令提示来执行登入启动才会变成“登入shell”。若以登入shell来启动的话,~/.bash_profile等文件将被执行,而用户名称、家目录、密码等也会变成目前用户的东西。

但是例如,可用「su」指令变成super user,或用「su – nisimura」的一样加上「-」来执行。

另外,有时也会将终端程式以登入shell方式来启动。例如,若是kterm的话,则为「kterm -ls」,且以登入shell来启动shell。

◆shell的动作设定

shell动作是以Shell选项和shell变数来设定。

shen变数(请参考往后的介绍),且和后述的环境变数不同,并无法连结由shell所啟动的程序(副程序)。想要连结副程序之变数,也就是想要参考从shell之外的指令的变数,是以后述的环境变数来设定。



◆ 分开使用设定档

shell选项主要设定以指令列来操作的內容。因此,一般是以~/.bash_profile来设定。另外,shell变数或环境变数一般也是以~/.bashrc来设定。

因为不管那一种情形都是读取shell来执行,所以直接修改和利用指令列输入相同。

另外,若要修改~/.bash_profile或~/.bashrc的话,则重新登入或以source指令来重新读取即可。请参阅以下范例:





◆ shell选项(set选项)

shell选项可切换档名的万用字符展开或记录档(history)等的动作。除了可指定bash启动时的选项外,也可用set指令来设定。



◆ shell选项(shopt选项)

从bash 2.0所追加的内容中,是以shopt指令来设定。





◆ shell变数

如同指令输入列或纪錄档的大小一樣,于on/off中无法设定的內容皆以shell变数来设定。

shell变数是用「变数名=值」来设定※。欲显示值的情況时,就使用echo指令来做为「echo $变数名」。欲刪除变数的情況时,是执行「unset变数名」。此外,不刪除变数且想将变数值归零时设为「变数名=」。

※【shell变数的值】tcsh时,变为「set变数名=值」。



◆ 环境变数

虽然shell变数是只看到shell的变数,但是环境变数是环境整体,也就是从shell所啟动的指令亦可参照的变数。例如,对环境变数LANG指定zh_CN(中文)的情況,指令输出的讯息是为中文。此外,如MANPATH一樣,亦具有特定指令专用的环境变数。

定义完成的shell变数可利用「export变数名」在环境变数。而且,亦可以「export变数名=值」来定义。值的显示是为shell变数相同「echo$变数名」或,可以printenv指令来确认。



※【环境变数的设定】tcsh的情況时是「setenv变数名值」此外,tcsh时shell变数和环境变数是完全做为其他东西来加以处理(各自的用途和bash相同) 。



◆ alias

在经常使用的指令中,会事先标上alias(別名)来提高操作性。譬如說,可使用命名为ll来执行「1s -la」的使用方法。若想要处理参数或想要透过复数指令来处理的情形时,则只要使用函数就行了。

◆ 设定档案

使用者专用的alias一般是事先定义为 ~/.bashrc。

另外,若要修改~/.bashrc的话,必须重新登入或是执行「source bashrc」来设定。



◆ alias的定义和解除

用「alias名称=內容」来定义,而用「unalias名称」来解除。仅用alias来浏览显示已定义的別名.



◆ 暂时性解除alias

若相暂时件夹解除alias的话,可存开头加上「╲」註记。



◆ 确认所执行的內容

若事先设定shell的xtrace选项为有效(-x)时,就能执行设定的指令。



◆函数

所谓函数※(function)乃针对使用多个指令或控制语法等的“处理集”来命名。

函数是用「function函数名(){处理內容;}」来定义的※而透过函数的变数则称为参数,可依序存取为$1、$2…。

例如下列,是显示子目錄一览表的函数。用「subdir/etc」只显示/etc底下的子目錄。另外,若想用多个栏来显示时,则要使用column指令,或设定为「subdir/dir|column」。



【函数】於包含bash的一般程式化中,将处理一些再回到数值称为函数。若为bash函数时,用return就可回到任意值。

【函数的定义】可省略任一个的fuction和()。

◆ 设定档案

个別使用者专用的函数※,一般是事先用~/.bashrc来定义的。

另外,若要修正~/.bashrc的话,则重新登入或是执行「source ~/.bashrc」。就可设定。



◆ 显示已定义的函数

已定义的函数是可用set指令或是declare指令来确认。



※ -f 是显示函数,-fx是显示被export的函数

【使用者用的函数】在整体系统上所使用的函数是用/etc/init.d/functions等来定义的。

在shell环境底下,要使用中文是需要设定地区。

地区的设定是使用环境变数LC_ALL以及LANG来指定语言名、区域名,甚至codeset(设定码)名。为了显示中文,虽然使用的codeset中具有中文Big5,HZ,GB2312等,但是於Linux环境中,一般是使用UFT.8、GB2312或是中文Big5。

使用中文情況的地区是「zh_CN.GB2312」,UTF一8时则使用「zh_CN.UTF.8」。



◆ 暂时切換地区

持续於变数定义来执行指令,且可执行指令用的环境设定。例如,若执行为「LANG=C date」时,则能夠在“LANG=C”(Common)的环境下,来执行date指令。



出处:南方Linux
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载