将配置文件与代码分开,这样任何人都可以更改他们的配置,而无需任何特殊的编程技能。将程序配置与代码分开很重要。它使非程序员无需修改程序代码即可更改配置。对于编译后的二进制可执行文件,这对于非程序员来说是不可能的,因为它不仅需要访问源文件(我们在开源程序中这样做),还需要程序员的技能。很少有人有这种能力,而且大多数人都不想学习。对于像Bash这样的shell语言,由于shell脚本没有被编译成二进制格式,因此源代码是可以访问的。尽管具有这种开放性,但对于非程序员来说,深入研究和修改shell脚本并不是一个特别好的主意。即使是经验丰富的开发人员和系统管理员也可能不小心做出导致错误或更糟的更改。因此,将配置项放在易于维护的文本文件中提供了分离,并允许非程序员编辑配置,而没有意外修改代码的危险。许多开发人员使用编译语言编写的程序来这样做,因为他们不希望用户成为开发人员。出于许多相同的原因,对解释型shell语言执行此操作也是有意义的。通常,与许多其他语言一样,您可以为Bash程序编写代码,该程序读取和解析ASCII文本的配置文件,读取变量名,并在程序代码执行时设置值。例如,配置文件可能如下所示:var1=LinuxGeek46var2=Opensource.com程序将读取该文件,解析每一行,并将值设置到每个变量中。SourcingBash使用一种更简单的方法来解析和设置称为sourcing的变量。从可执行shell程序中获取外部文件是将该文件的内容原封不动地带到shell程序中的一种简单方法。从某种意义上说,这很像编译语言中的include语句,在运行时包含库文件。这些文件可以包含任何类型的Bash代码,包括变量赋值。(LCTT译注:对于使用source或.command引入另一个文件的行为,我们提倡翻译为“sourceintroduction”。)照例,演示比解释容易。首先,创建一个~/bin目录(如果它不存在)并将其用作当前工作目录(PWD)。Linux文件系统分层标准将~/bin定义为用户存储可执行文件的适当位置。在此目录中创建一个新文件。将其命名为main并使其可执行:[dboth@davidbin]$touchmain[dboth@davidbin]$chmod+xmain[dboth@davidbin]$将以下内容添加到此可执行文件中:#!/bin/bashName="LinuxGeek"echo$Name并执行这个Bash程序:[dboth@davidbin]$./mainLinuxGeek[dboth@davidbin]$创建一个新文件并将其命名为~/bin/data。该文件不需要是可执行文件。在其中添加以下信息:#Sourcedcodeandvariablescho"Thisisthesourcecodefromthedatafile."FirstName="David"LastName="Both"在主程序中添加三行,如下所示:#!/bin/bashName="LinuxGeek"echo$Namesource~/bin/dataecho"Firstname:$FirstName"echo"LastName:$LastName"重新运行程序:[dboth@davidbin]$./mainLinuxGeekThisisthesourcecodefromthedatafile.Firstname:DavidLastName:Both[dboth@davidbin]$关于源引用还有一件很酷的事情需要了解。您可以使用点(.)作为源命令的快捷方式。更改主文件以将source替换为.#!/bin/bashName="LinuxGeek"echo$Name.~/bin/dataecho"Firstname:$FirstName"echo"LastName:$LastName"并再次运行程序。结果应该与上一次运行完全相同。运行Bash每个使用Bash的Linux主机(几乎所有主机都使用Bash,因为Bash是所有发行版的默认shell)都包含一些优秀的内置源代码示例。每当Bashshell运行时,其环境都必须以可以使用的方式进行配置。有五个主要文件和一个用于配置Bash环境的目录。它们及其主要功能如下:/etc/profile:系统级环境和启动程序/etc/bashrc:系统级功能和别名/etc/profile.d/:系统级配置脚本目录各种命令vim和mc等行工具和系统管理员创建的任何自定义配置脚本~/.bash_profile:用户特定的环境和启动程序~/.bashrc:用户特定的别名和函数~/.bash_logout:用户特定的命令,已执行当用户注销时,尝试通过这些文件跟踪执行顺序,以确定它在非登录Bash初始化和登录Bash初始化中使用的顺序。我在我的Linux培训系列《使用和管理 Linux:从零到系统管理员》的第1卷第17章中这样做了。给你提示。这一切都从~/.bashrc脚本开始。总结本文探讨了在Bash程序中引用代码和变量的方法。这种从配置文件中解析变量的方法快速、简单且灵活。它提供了一种将Bash代码与变量赋值分开的方法,使非程序员能够设置那些变量的值。
