shell是什么
首页->学习资料->linux教程->linux shell 关键词: 发布时间:2016-02-26 03:28:03 浏览次数:1466

在linux中shell的功能其实是负责将我们敲击的命令翻译或者解释成linux内核看得懂的命令;


shell编程类似windows系统下的批处理文件(??.bat),就是把一系列的命令写在shell文件中,当执行该文件就可以执行其中的命令,完成一系统的任务;

应用场景:比如清除服务器上的垃圾文件,一个人手动去清理不现实,这样写一个shell程序,每次运行一下就可以将指定的垃圾文件清除


linux中shell有很多种,是由于不同国家的人习惯不同,写出的一套linux管理命令,常用的有以下三种,中国用户喜欢用sh这种,欧洲用户喜欢用ksh,他们的命令大部分相同

以上图中可能有点旧了,个人用的centos6.4,系统里显示的是以下几种

这三种在我们的linux系统中都有,可以用如下命令查看:

[hurong@localhost ~]$ ls -l /bin/*sh
-rwxr-xr-x. 1 root root 874376 Feb 21  2013 /bin/bash
lrwxrwxrwx. 1 root root      4 Feb 25 13:00 /bin/csh -> tcsh
-rwxr-xr-x. 1 root root 102216 Oct 17  2012 /bin/dash
lrwxrwxrwx. 1 root root      4 Feb 25 12:51 /bin/sh -> bash
-rwxr-xr-x. 1 root root 377544 Feb 21  2013 /bin/tcsh
[hurong@localhost ~]$

以上查看到的虽然有5种,其实只有三种,以下这两行是一个链接文件,类似于windows下的快捷文式,他们分别指向tcsh和bash
lrwxrwxrwx. 1 root root      4 Feb 25 13:00 /bin/csh -> tcsh
lrwxrwxrwx. 1 root root      4 Feb 25 12:51 /bin/sh -> bash


如何查看当前用的哪种shell?

如果我们用不同种类的shell,里面有些命令可能是不一样的,可以用env命令查看服务器环境,里面可以看到当前服务器用的是哪一种shell,以下显示可以看出,我电脑上用的是bash这种

[hurong@localhost ~]$ env
ORBIT_SOCKETDIR=/tmp/orbit-hurong
HOSTNAME=localhost.localdomain
TERM=xterm
SHELL=/bin/bash
.....


如何切换shell种类?

可以用命令:

chsh(change shell)


功能说明:更换登入系统时使用的shell。

语  法:chsh [-luv][-s <shell 名称>][用户名称]

补充说明:每位用户在登入系统时,都会拥有预设的shell环境,这个指令可更改其预设值。若不指定
任何参数与用户名称,则chsh会以应答的方式进行设置。

参  数:
 -s<shell 名称>或--shell<shell 名称>  更改系统预设的shell环境。 
 -l或--list-shells  列出目前系统可用的shell清单。 
 -u或--help  在线帮助。 
 -v或-version  显示版本信息。    


注意:个人测试只能用root才能成功,貌似这是个root权限才有的命令

如将当用正在使用的bash改为dash,下面提示shell changed表示修改成功,需要用户退出重新登录一下后才生效:

以下将当前在使用的bash改为dash

[root@localhost hurong]# ls -l /bin/*sh
-rwxr-xr-x. 1 root root 874376 Feb 21  2013 /bin/bash
lrwxrwxrwx. 1 root root      4 Feb 25 13:00 /bin/csh -> tcsh
-rwxr-xr-x. 1 root root 102216 Oct 17  2012 /bin/dash
lrwxrwxrwx. 1 root root      4 Feb 25 12:51 /bin/sh -> bash
-rwxr-xr-x. 1 root root 377544 Feb 21  2013 /bin/tcsh
[root@localhost hurong]# chsh -s /bin/dash
Changing shell for root.
Shell changed.

然后退出root再重新登录,

[root@localhost hurong]# exit
exit
[hurong@localhost ~]$ su root
Password:

这时看到新的shell已经生效,下面的提示符变成#,而非bash下的[root@localhost hurong]#这种,再次用env查看服务器环境

# env
在显示结果中会看到下面这样一行,表示当前在使用的是dash

SHELL=/bin/dash


个人感觉修改shell类型好像就是将系统使用的shell目录修改了,然后用户重新登录一下就生效了;

赞:(0)
踩:(0)
相关文章
开机自启动及端口开启
热门文章
win7中将文件拷贝到虚拟机linux下
phpexcel设置行高及列宽,背景颜色,
rabbitmq无法启动
intellij idea不显示git push按钮
php7中使用mongodb的aggregate进行
centos7.4 64位下swoole安装及配置
laravel页面静态化的方法
navicate连接mycat报1184错误
单点登录sso原理及php实现方式及de
devops-jenkins容器为pending状态
好评文章
phpexcel设置行高及列宽,背景颜色,
php7中使用mongodb的aggregate进行
intellij idea打开文件所在文件夹
windows下使用MongoDB Compass Com
win7中将文件拷贝到虚拟机linux下
laravel 中悲观锁 & 乐观锁的使用
单点登录sso原理及php实现方式及de
navicate连接mycat报1184错误
rabbitmq无法启动
laravel整合dingo/api方法步骤:jwt
标签
rabbitmq mysql备份 elasticsearch golang swoole
我的项目
【github】www.github.com/hurong241
【码云】gitee.com/hu_rong/projects
【docker hub】hub.docker.com/repositories/hurong241
【packagist】packagist.org/users/hurong241/packages
站点信息
建站时间:2011年
文章数:607篇
浏览数:933078
粤ICP备18028092号-1  微信:hurong241