我经常与bash和shell混淆。 他们是一样的吗? 如果我想学习bash,会不会涉及Linux shell编程的相关书籍? 我使用Ubuntu Linux。
编辑:(获得两个答案后添加。)如何bash与terminal相关联?
bash是一种特殊类型的Linux shell(Bourne再次shell),但是还有其他一些。 在Ubuntu中,bash是默认的。 我相信有很多shell编程书籍可以覆盖它,我已经阅读过。
这个问题有点陈旧了,但是我想我可以按照问题第二部分的要求来清除terminal和shell之间的区别。 你可以把终端想象成一个显示设备。 这些日子里,最典型的是一个程序,但是有一段时间,终端是一个单独的盒子。 当您启动终端程序时,它会向本地系统发送一个唤醒信号。 在过去,物理终端在(通常是RS232)连接上向终端接口发送电信号。 无论哪种情况,操作系统都会将“登录”文本发送回任何设备或程序发送的唤醒信号。 壳尚未涉及。
操作系统通过验证用户名和密码(如果有)来完成登录。 然后,它会检查密码文件中经过验证的用户的条目,以获取该用户首选外壳的名称。 在创建帐户时会分配一个默认shell,用户通常可以稍后更改该分配。 操作系统启动shell程序,并且shell继承连接到终端的通信路径。 终端程序仍然在那里,显示发送给它的文本,并发送用户键入的通讯线路。 现在是线路另一端的外壳,而不是操作系统。
任何程序都可以分配为用户初始登录shell。 将'date'程序作为登录shell是可能的,但不是很有用。 在这种情况下,登录后用户只能看到在他的终端窗口中显示的日期,并将被注销。 终端和外壳的区别在于终端始终在那里,与用户倾听和交谈。 它不解释键击(超出映射到字符集)。 shell是操作系统启动的东西(或者用户稍后以类似堆栈的方式添加)来处理终端通信线路另一端的通信。 它决定采取行动来响应用户的按键。
采取从linuxcommand.gds.tuwien.ac.at :
简而言之,shell是一个从键盘上获取命令并将它们提供给操作系统执行的程序。 在过去,这是Unix计算机上唯一可用的用户界面。 现在,除了命令行界面(CLI)之外,我们还有图形用户界面(GUI),如shell。
在大多数Linux系统上,一个名为bash的程序(代表Bourne Again SHell,原始Bourne shell程序的增强版本sh,由Steve Bourne编写)充当shell程序。 在典型的Linux系统上有几个额外的shell程序。 这些包括:ksh,tcsh和zsh。
“bash”是许多Linux版本的“shell”之一,即"bash" typeof "shell" == true
没有bash是一个shell。 从技术上说,Linux不是一个shell,而是实际上的内核,但是许多不同的shell可以运行在它之上(bash,tcsh,pdksh等)。 bash恰好是最常见的一个。
不,它们是不一样的,是的,linux shell编程书籍应该有重要的部分,或者完全是关于bash脚本的。
Ubuntu是一个包含bash作为可用shell的Linux发行版。 当你在Ubuntu中打开一个终端时,你将打开一个模拟一定数量的行和列的屏幕。 Bash是一个程序,可以在终端上运行,并允许您与系统进行交互。 这很像在windows中的命令窗口中的dos提示符,如果你熟悉的话。
你可以有多个shell,但是很多人更喜欢bash,你会有最好的运气来学习它。
祝你好运!
试试: http : //en.wikipedia.org/wiki/Unix_shell提示:Bash是一种Unix shell。
为了让某些脚本在AIX和Linux之间可移植,我必须具有特定的逻辑来确定框的类型并运行某些命令的变体。
例如:
如果你使用'\ c'来防止在回声结束时出现换行符,那么你必须改成“echo -n”。
此外,ping语法稍微改变。
我认为大多数命令大致是一样的,每次都会有一些细微的细微变化。