在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
:
而在Bourne shell下,则是:
您也可以在命令行上加一个$
字符在变量之前从而取得环境变量。
举个例子,用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
可用下面的技巧。
您使用的shells必须
在/etc/shells
文件里列出。 假如您从
ports里装一个shell, 那就不用做这步了。
假如您手工装一个shell,那就要手工添加进去。
举个例了子,假如您手工把 bash
装到
/usr/local/bin
里,您还要进行这一步:
然后运行chsh
。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.