【发布时间】:2010-01-13 18:22:58
【问题描述】:
我经常对 bash 和 shell 感到困惑。他们是一样的吗?如果我想学习 bash,会不会被 Linux shell 编程相关的书籍所覆盖?我使用 Ubuntu Linux。
编辑:(得到两个答案后添加。)bash如何与终端关联?
【问题讨论】:
我经常对 bash 和 shell 感到困惑。他们是一样的吗?如果我想学习 bash,会不会被 Linux shell 编程相关的书籍所覆盖?我使用 Ubuntu Linux。
编辑:(得到两个答案后添加。)bash如何与终端关联?
【问题讨论】:
bash 是一种特殊类型的 Linux shell(Bourne Again shell),但还有很多其他类型。在 Ubuntu 中,bash 是默认设置。我确信有很多关于它的 shell 编程书籍,我过去读过一本。
【讨论】:
/bin/sh,但默认的登录 shell 仍然是 Bash。
这个问题有点陈旧,但我想我可能会按照问题第二部分的要求澄清终端和 shell 之间的区别。您可以将终端视为显示设备。如今,它最典型的是一个程序,但曾经有一段时间,终端是一个单独的盒子。当你启动终端程序时,它会向本地系统发送一个唤醒信号。在过去,物理终端通过(通常为 RS232)连接向终端接口发送电信号。在任何一种情况下,操作系统都会将“登录”文本发送回发送唤醒信号的任何设备或程序。还没有涉及到shell。
操作系统通过验证用户名和密码(如果有)来完成登录。然后,它会检查密码文件中已验证用户的条目以获取该用户首选 shell 的名称。创建帐户时分配了一个默认 shell,用户通常可以稍后更改该分配。操作系统启动shell程序,shell继承与终端相连的通信路径。终端程序仍然存在,显示发送给它的文本并将用户键入的内容发送回通信线路。现在它是另一端的外壳,而不是操作系统。
任何程序都可以被指定为用户初始登录shell。将“日期”程序指定为登录 shell 是可能的,但不是很有用。在这种情况下,用户登录后只会看到显示在其终端窗口中的日期,然后会被注销。终端和shell的区别在于终端一直都在,与用户进行监听和交谈。它不解释击键(除了映射到字符集)。 shell 是操作系统启动的(或用户稍后以类似堆栈的方式添加)以处理终端通信线路另一端的通信。它决定响应用户的击键而采取的行动。
【讨论】:
取自linuxcommand.gds.tuwien.ac.at:
简单地说,shell就是一个程序 这需要你的命令 键盘并将它们交给 要执行的操作系统。在里面 过去,它是唯一的用户 Unix 上可用的接口 电脑。现在,我们有图形 用户界面 (GUI) 除了 命令行界面 (CLI),例如 外壳。
在大多数 Linux 系统上,一个名为 bash(代表再次伯恩 SHell,增强版 原始的 Bourne shell 程序,sh, 由史蒂夫伯恩撰写)充当 外壳程序。有几种 其他可用的 shell 程序 一个典型的Linux系统。这些包括: ksh、tcsh 和 zsh。
【讨论】:
“bash”是 Linux 的许多可用“shell”之一,即"bash" typeof "shell" == true
【讨论】:
没有。 bash 是一个外壳。从技术上讲,Linux 不是 shell,实际上是内核,但许多不同的 shell 可以在其上运行(bash、tcsh、pdksh 等)。 bash 恰好是最常见的一种。
【讨论】:
chsh(1) 手册页)。
不,它们不一样,是的,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 语法也有一些变化。
我认为大多数命令将大致相同,偶尔会有一些细微的细微差别。
【讨论】: