在FreeBSD里,每日有一大堆工作是在命令行的界面完成的,那就叫做shell。 一个shell的主要功能就是从输入是取得命令然后去执行他。 许多的shell同样能帮我们完成内建的每日功能,例如:文件管理、文件寻找、命令行编辑、 宏指令和环境变量。FreeBSD内含了一些shell,例如:sh、Bourne Shell、 tcsh和改良过的C-shell。 另外也有些shell也可在FreeBSD的Ports得到,例如:zsh和bash。
您想使用那一种shell取决于您的喜好, 假如您是C程序设计师,您可能选择一个C-like shell例如tcsh。 假如您是从Linux过来的或是一个命令行的新手,您可能会试一下bash。 这一点告诉我们每一个shell都有各自的特性,可能适用于您的工作环境,也可能不适用于您的工作环境。
每个shell都有一个共通点就是文件名补全。 输入命令或文件名的前几个字,然后按Tab键,就能靠shell的自动补全功能得出 命令或文件名。这里有一个例子,假设您有两个文件叫 foobar 和foo.bar,而您想删除 foo.bar, 可这样在键盘上输入 rm fo[Tab].[Tab]。
那么shell就会输出 rm foo[BEEP].bar。
这个[BEEP] 是这控制台铃声, 那个是告诉我们它不能完成文件名补全,因为有多个文件名符合。 foobar 和 foo.bar 都是以 fo开头, 它只可以补全到 foo。 输入 .并再按一次 Tab,shell才把其余的文件名全部显示出来。
另一个特点就是shell利用环境变量运行。环境变量是贮存在shell环境空间上相对应的键和可变值, 这个空间能够补程序从shell里读出,而且包含了许多程序的配置。 这个一个常用环境变量列和其含义的列表:
变量 | 说明 |
---|---|
USER | 当前登录进入的用户名。 |
PATH | 搜索程序路径,以两点的冒号分隔开。 |
DISPLAY | 假如有这个变量的话,就是X11显示器的网络名称。 |
SHELL | 当前所用的shell。 |
TERM | 用户终端的名字,通常用在确定终端的能力。 |
TERMCAP | 各种终端功能所用终端分离编码的基本数据项目。 |
OSTYPE | 操作系统类型,默认是FreeBSD。 |
MACHTYPE | 是指系统上运行的CPU体系结构。 |
EDITOR | 用户首选的文本编辑器。 |
PAGER | 用户首选的文本页面调度程序 。 |
MANPATH | 搜索联机手册路径,以两点的冒号分隔开。 |
不同的shell设置环境变量也不相同。举个例子, 在如tcsh 和 csh这样的C-Style shell, 您必须使用setenv去设置环境变量。 而在如sh和bash这样的Bourne shell, 您必须使用export去设置当前环境变量。 再举个例子,要去设置或改变EDITOR环境变量, 在csh或tcsh下将EDITOR设为 /usr/local/bin/emacs:
% setenv EDITOR /usr/local/bin/emacs
而在Bourne shell下,则是:
% export EDITOR="/usr/local/bin/emacs"
您也可以在命令行上加一个$字符在变量之前从而取得环境变量。 举个例子,用echo $TERM 就会显示出$TERM的设定值, 其实就是shell取得$TERM并传给echo来显示的。
shell里有许多特别的字符代表着特别的资料,我们把叫做meta-characters。 最常用的就是*字符,它可代表文件名的任何字符。 这些特别字符应用到文件名全域方面。假如,输入 echo *和输入 ls的效果是相同的,其实就是 shell 取得了全部符合 *的文件名,并传给 echo 在命令行下显示出来。
为了防止shell去分析这些特别字符, 我们可在它之前加一个 \字符去说明它只是普通字符。 echo $TERM就会显示出您的终端情况, 而 echo \$TERM 就会显示出 $TERM 这几个字。
改变您的Shell的最简单方法是使用 chsh 命令。 执行 chsh 将根据您设定的EDITOR 环境变量进入到那个编辑器,假如没有设定,就会进入vi编辑器。 请改变“Shell:”这行对应值。
您可使用chsh 的-s
选项,
这样就能设置您的shell却又不用编辑器。假如您想把shell改为bash
可用下面的技巧。
% chsh -s /usr/local/bin/bash
注意: 您使用的shells必须 在/etc/shells 文件里列出。 假如您从 ports里装一个shell, 那就不用做这步了。 假如您手工装一个shell,那就要手工添加进去。
举个例了子,假如您手工把 bash装到 /usr/local/bin里,您还要进行这一步:
# echo "/usr/local/bin/bash" >> /etc/shells然后运行chsh。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<[email protected]>.
关于本文档的问题请发信联系 <[email protected]>.