编辑你写好的脚本
在你写新的脚本之前,我想指出的是你已经有一些脚本。这些脚本放在你的home目录下,而当你的帐号被创建好的时候就有了,并且作为被用来配置你电脑的日常习惯。你可以编辑这些脚本来改变某些东西。
在这节课中,我们将看几个脚本然后学到一些关于shell的重要新概念。
命令,命令,到处是
到目前为止,我们还没有真正讨论什么是命令。命令可以是几个不同的东西。一些命令是被集成到shell本身,换句话说,shell 自动理解它自己的一些命令。命令cdpwd在这个组里面。命令在shell 中执行被称作shell 集成。要查看bash中集成的命令列表,使用help命令。
第二种类型的命令是可执行程序,大部分的命令是在这个组里面。可执行程序就是目录中包含你的路径的所有文件。
最后两组命令是被包含在你的运行时环境中。在你的会话期间,系统会在内存中保持一些事实存在的东西。这些信息是被叫做环境。环境包含了如下东西像你的路径,你的用户名,存放你分发邮件的文件名,还有更多。你可以通过set 命令看到环境的完整列表。
命令包含在环境中的两种类型是别名和shell功能。
别名
现在,在我刚说的一些使你变得糊涂之前,让我们做一个别名。确信你是在你的home目录中。使用你最喜欢的文本编辑器,打开.bash_profile文件然后将这一行添加到文件的末尾:
alias l='ls -l'
 
.bash_profile是一个你每次登录时执行的shell脚本。在添加alias命令到文件之前,我们已经创建了一个叫”|”的将执行”ls –l”的新命令。要试用你的新命令,登出并登录回来。正在使用这个技术,你可以为你自己创建任何数量的自定义命令。这是另一个让你尝试的:
alias today='date +"%A, %B %-d, %Y"'
 
这个alias创建了一个新的叫”today”的用来以完美格式显示今天日期的命令。
顺便说一下,alias 命令是另一个shell的集成。你可以直接在命令提示符中创建你的别名;然而它们仅会在停留当前的shell会话中保持有效。例如:
[me@linuxbox me]$ alias l='ls -l'
Shell函数
别名对每个简单命令有效,但如果你想创建一些更复杂的东西,你应该尝试shell函数。Shell函数可以被认为像脚本嵌套脚本或者小的子脚本。让我们试一个。再次用你的文本编辑器打开.bash_profile并用以下内容替换别名:
function today {
    echo "Today's date is:"
    date +"%A, %B %-d, %Y"
}
是否相信它,function 也是一个shell集成,且作为和别名一起,你可以在命令提示符中直接输入shell函数:
[me@linuxbox me]$ function today {
> echo "Today's date is:"
> date +"%A, %B %-d, %Y"
> }
[me@linuxbox me]$
类型
自从有了很多类型的命令,它能够变得很难以说清什么是一个别名,什么是一个shell函数或一个可执行文件。要确定一个命令的类型是什么,使用type命令。Type将会显示命令的类型。它能够像以下被使用:
[me@linuxbox me]$ type command
.bashrc
尽管在你的.bash_profile中放入你的别名和shell函数将开始工作,它不被看作是好的形式。有一个单独的文件叫.bashrc被确定为在如下使用。你也许注意到在你的.bash_profile中开头的一小段代码像这样:
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
 
这个脚本碎片检查你主目录下的.bashrc文件是否存在。如果有一个被发现,那这个脚本将读取它的内容。如果这段代码是在你的.bash_profile中,你应该编辑.bashrc文件并将你的别名和shell函数放在那儿。