在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目录修改了,然后用户重新登录一下就生效了;
- 相关文章
- 开机自启动及端口开启
- 热门文章
- win7中将文件拷贝到虚拟机linux下
- phpexcel设置行高及列宽,背景颜色,
- rabbitmq无法启动
- intellij idea不显示git push按钮
- php7中使用mongodb的aggregate进行
- laravel页面静态化的方法
- centos7.4 64位下swoole安装及配置
- navicate连接mycat报1184错误
- curl设置超时不起作用(CURLOPT_TIM
- 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
- 我的项目
- 【github】www.github.com/hurong241
- 【码云】gitee.com/hu_rong/projects
- 【docker hub】hub.docker.com/repositories/hurong241
- 【packagist】packagist.org/users/hurong241/packages
- 站点信息
- 建站时间:2011年
- 文章数:623篇
- 浏览数:1303109