在学习docker的时候,发现在执行docker exec的时候,后面跟一个command参数可以进入命令行,那么有哪些参数可以直接进入shell命令行呢?
Shell,它们各有所长,有的占用资源少,有的支持高级编程功能,有的兼容性好,有的重视用户体验。
sh
sh的全称是Bourne shell,由AT&T公司的Steve Bourne开发,为了纪念他,就用他的名字命名了。
sh是UNIX上的标准shell,很多UNIX版本都配有sh。sh是第一个流行的Shell。
csh
sh之后另一个广为流传的shell是由柏克莱大学的Bill Joy设计的,这个shell的语法有点类似C语言,所以才得名为C shell ,简称为csh。
tcsh
tcsh是csh的增强版,加入了命令补全功能,提供了更加强大的语法支持。
ash
一个简单的轻量级的Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。
bash
bash shell是Linux的默认shell,由GNU组织开发,保持了对sh shell的兼容性,是各种Linux发行版默认配置的 shell。尽管如此,bash和sh还是有一些不同之处:
-
一方面,bash扩展了一些命令和参数;
-
另一方面,bash并不完全和sh;
-
兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用bash代替sh。
查看 Shell
Shell是一个程序,一般都是放在/bin或者/user/bin目录下,当前Linux系统可用的Shell都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用cat命令查看它。
# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
# echo $SHELL
/bin/bash