如果您给 login
提供有效的用户名和密码组合,它将检查 /etc/passwd
以查看为您提供哪个 shell。在大多数 Linux 系统上,这将是 bash
。bash
的工作是读取您的命令并确保它们被执行。它同时是用户界面和编程语言解释器。
作为用户界面,它读取您的命令,并在命令是 cd
等“内部”命令时自行执行,或者在命令是 cp
或 startx
等“外部”命令时查找并执行程序。它还做一些很棒的事情,例如保留命令历史记录和完成文件名。
我们已经看到了 bash
作为编程语言解释器的作用。init
运行以启动系统的脚本通常是 shell 脚本,并由 bash
执行。拥有合适的编程语言,以及命令行上可用的常用系统实用程序,如果您知道自己在做什么,将会是一个非常强大的组合。例如(自鸣得意模式开启),前几天我需要将一堆“补丁”应用到一个源代码目录。我可以使用以下单个命令来完成此操作
for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;
这会查看我的主目录中所有名称以 sh-utils-1.16
开头并以 .patch
结尾的文件。然后它依次获取每个文件,并将变量 f
设置为它,并执行 do
和 done
之间的命令。在这种情况下,有 11 个补丁文件,但也可能很容易有 3000 个。
文件 /etc/profile
控制 bash 的系统级行为。您在此处放置的内容将影响系统上使用 bash 的每个人。它将执行诸如将目录添加到 PATH
、设置您的 MAIL
目录变量之类的操作。
键盘的默认行为通常有很多不足之处。实际上是 readline 处理这个问题。Readline 是一个独立的软件包,用于处理命令行界面,提供命令历史记录和文件名完成,以及一些高级行编辑功能。它被编译到 bash 中。默认情况下,readline 使用您主目录中的文件 .inputrc
进行配置。bash 变量 INPUTRC 可用于覆盖 bash 的此设置。例如,在 Red Hat 6 中,INPUTRC
在 /etc/profile
中设置为 /etc/inputrc
。这意味着退格键、删除键、Home 键和 End 键对每个人都很好用。
一旦 bash 读取了系统级配置文件,它就会查找您的个人配置文件。它会在您的主目录中检查 .bash_profile
、.bash_login
和 .profile
。它运行找到的第一个文件。如果您想更改 bash 对您的行为方式,而不更改它对其他人的工作方式,请在此处进行更改。例如,许多应用程序使用环境变量来控制它们的工作方式。我将变量 EDITOR
设置为 vi
,以便我可以在 Midnight Commander(一个优秀的基于控制台的文件管理器)中使用 vi 而不是其编辑器。
bash 的基础知识很容易学习。但不要止步于此:它具有令人难以置信的深度。养成寻找更好方法来做事的习惯。
阅读 shell 脚本,查找您不理解的内容。