首页 > 代码库 > Shell编程基础

Shell编程基础

shell简介

shell是用户和linux内核进行交流的中间层,它提供了用户与内核进行交互操作的一种接口。接受用户输入的命令,并且把命令送入内核去执行。

 

查看当前系统安装的shell

1.查看/etc/shells

shells

2.ll  /bin/*sh

QQ图片20140606224627

可以看出当前系统中存在的shell只有bash、dash、tcsh三种,csh只是链接到tcsh,sh则是链接到了bash。

 

可以使用echo $SHELL 命令来查看当前正在使用的shell

 

关于nologin

不知道大家有没有注意到用第一种方法查看shell种类比第二种多出了/sbin/nologin。其实nologin并不是一种shell

那nologin到底是什么作用呢?我们知道在linux系统中存在很多用户,这些用户默认情况下是不允许登录系统的,这

类用户我们成为 虚拟用户

 

在/etc/passwd文件中将这些用户的默认shell置为/sbin/nologin就可以禁止用户登入系统。

在/etc/passwd文件中可以找到哪些用户不允许登录系统(如下图)

 

QQ图片20140606230553

 

当我们偏要切换到上述这些用户(比如apache用户)的时候,系统会给出错误提示

QQ图片20140606230821

 

其实Linux系统是允许自定义上述的错误提示信息的,我们只需要编辑/etc/nologin.txt文件(不存在的话,就touch一个)

并在里面加入自定义的错误提示就可以了。

 

例如我们可以把错误提示改为:Your current login shell is /sbin/nologin…。

然后在切换到apche用户,请看这时候的错误提示:

QQ图片20140606231417

 

有这么一种特殊情况,可能系统由于特殊原因需要维护,系统管理员需要暂时禁止所有非root用户的登录。这时候Linux提供了相应的机制。

只需要提供/etc/nologin文件,并在该文件中写入要展示给用户的信息即可。此时,logout出当前用户,用非root用户登录,已经不能登入系统了。

如果系统维护完毕,删除该文件即可。

 

安装其他shell

linux发展到现在,已经有很多shell可以选择。有最基本的sh、增强版的sh->bash、兼容c语法适合shell编程的csh、zsh、ksh等。

用户可以根据自己不同的需求来选择相应的shell。下面以安装ksh为例子介绍其他shell的安装,很简单:

 

执行yum –y install ksh

安装完毕查看当前系统shell

QQ图片20140606233856

 

设置shell命令别名-alias的使用

1.可以直接在shell(这里是bash)命令提示符下输入:

  alias  别名=原始命令

  通过此种方式设置一个别名:

  alias listall=’ls  -al’

 QQ图片20140607095007

通过此种方式设置的别名只是对当前shell起作用,重新启动一个shell该别名就会失效。

 

2.在~/.bashrc文件中设置别名

   QQ图片20140607095007

   重新启动一个shell,上述文件就会被读取,且每次启动新的shell别名都有效,这也是设置个人偏好的最好的地方

 

3.在/etc/bashrc文件中设置别名:

    alias lsr=‘ls –r’

    重新启动一个shell,别名就会生效。

    通过这种方式设置的别名,对所有用户都会生效,重启也不会失效

 

上述三种设置别名的方式涉及几个配置文件,大家可能比较迷惑。从网上(感谢博主)拷贝一张图片,表述的比较清晰

QQ图片20140607100555

 

待续…