⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shells.html

📁 这是很好的学习嵌入式LINUX的文章
💻 HTML
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>Shells</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="UNIX 基础" href="basics.html" /><link rel="PREVIOUS" title="守护进程,信号和杀死进程" href="basics-daemons.html" /><link rel="NEXT" title="文本编辑器" href="editors.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="basics-daemons.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 3. UNIX 基础</td><td width="10%" align="right" valign="bottom"><a href="editors.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="SHELLS" name="SHELLS">3.9. Shells</a></h1><p>在FreeBSD里,每日有一大堆工作是在命令行的界面完成的,那就叫做shell。一个shell的主要功能就是从输入是取得命令然后去执行他。许多的shell同样能帮我们完成内建的每日功能,例如:文件管理、文件寻找、命令行编辑、宏指令和环境变量。FreeBSD内含了一些shell,例如:<tt class="COMMAND">sh</tt>、BourneShell、 <tt class="COMMAND">tcsh</tt>和改良过的C-shell。另外也有些shell也可在FreeBSD的Ports得到,例如:<tt class="COMMAND">zsh</tt>和<ttclass="COMMAND">bash</tt>。</p><p>你想使用那一种shell取决于你的喜好, 假如你是C程序设计师,你可能选择一个C-likeshell例如<tt class="COMMAND">tcsh</tt>。假如你是从Linux过来的或是一个命令行的新手,你可能会试一下<tt class="COMMAND">bash</tt>。这一点告诉我们每一个shell都有各自的特性,可能适用于你的工作环境,也可能不适用于你的工作环境。</p><p>每个shell都有一个共通点就是文件名补全。 输入命令或文件名的前几个字,然后按<bclass="KEYCAP">Tab</b>键,就能靠shell的自动补全功能得出命令或文件名。这里有一个例子,假设你有两个文件叫 <tt class="FILENAME">foobar</tt> 和<ttclass="FILENAME">foo.bar</tt>,而你想删除 <tt class="FILENAME">foo.bar</tt>,可这样在键盘上输入 <tt class="COMMAND">rm fo[<b class="KEYCAP">Tab</b>].[<bclass="KEYCAP">Tab</b>]</tt>。</p><p>那么shell就会输出 <tt class="COMMAND">rm foo[BEEP].bar</tt>。</p><p>这个[BEEP] 是这控制台铃声, 那个是告诉我们它不能完成文件名补全,因为有多个文件名符合。<tt class="FILENAME">foobar</tt> 和 <tt class="FILENAME">foo.bar</tt> 都是以 <varclass="LITERAL">fo</var>开头, 它只可以补全到 <var class="LITERAL">foo</var>。 输入 <varclass="LITERAL">.</var>并再按一次 <bclass="KEYCAP">Tab</b>,shell才把其余的文件名全部显示出来。</p><p>另一个特点就是shell利用环境变量运行。环境变量是贮存在shell环境空间上相对应的键和可变值,这个空间能够补程序从shell里读出,而且包含了许多程序的配置。这个一个常用环境变量列和其含义的列表:</p><div class="INFORMALTABLE"><a id="AEN4853" name="AEN4853"></a><table border="0" frame="void" class="CALSTABLE"><col /><col /><thead><tr><th>变量</th><th>说明</th></tr></thead><tbody><tr><td><tt class="ENVAR">USER</tt></td><td>当前登录进入的用户名。</td></tr><tr><td><tt class="ENVAR">PATH</tt></td><td>搜索程序路径,以两点的冒号分隔开。</td></tr><tr><td><tt class="ENVAR">DISPLAY</tt></td><td>假如有这个变量的话,就是X11显示器的网络名称。</td></tr><tr><td><tt class="ENVAR">SHELL</tt></td><td>当前所用的shell。</td></tr><tr><td><tt class="ENVAR">TERM</tt></td><td>用户终端的名字,通常用在确定终端的能力。</td></tr><tr><td><tt class="ENVAR">TERMCAP</tt></td><td>各种终端功能所用终端分离编码的基本数据项目。</td></tr><tr><td><tt class="ENVAR">OSTYPE</tt></td><td>操作系统类型,默认是FreeBSD。</td></tr><tr><td><tt class="ENVAR">MACHTYPE</tt></td><td>是指系统上运行的CPU体系结构。</td></tr><tr><td><tt class="ENVAR">EDITOR</tt></td><td>用户首选的文本编辑器。</td></tr><tr><td><tt class="ENVAR">PAGER</tt></td><td>用户首选的文本页面调度程序 。</td></tr><tr><td><tt class="ENVAR">MANPATH</tt></td><td>搜索man手册路径,以两点的冒号分隔开。</td></tr></tbody></table></div><p>不同的shell设置环境变量也不相同。举个例子, 在如<tt class="COMMAND">tcsh</tt> 和 <ttclass="COMMAND">csh</tt>这样的C-Style shell, 你必须使用<ttclass="COMMAND">setenv</tt>去设置环境变量。 而在如<tt class="COMMAND">sh</tt>和<ttclass="COMMAND">bash</tt>这样的Bourne shell, 你必须使用<ttclass="COMMAND">export</tt>去设置当前环境变量。 再举个例子,要去设置或改变<ttclass="ENVAR">EDITOR</tt>环境变量, 在<tt class="COMMAND">csh</tt>或<ttclass="COMMAND">tcsh</tt>下将<tt class="ENVAR">EDITOR</tt>设为 <ttclass="FILENAME">/usr/local/bin/emacs</tt>:</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbdclass="USERINPUT">setenv EDITOR /usr/local/bin/emacs</kbd></pre><p>而在Bourne shell下,则是:</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbdclass="USERINPUT">export EDITOR="/usr/local/bin/emacs"</kbd></pre><p>你也可以在命令行上加一个<var class="LITERAL">$</var>字符在变量之前从而取得环境变量。举个例子,用<tt class="COMMAND">echo $TERM</tt> 就会显示出<ttclass="ENVAR">$TERM</tt>的设定值, 其实就是shell取得<tt class="ENVAR">$TERM</tt>并传给<ttclass="COMMAND">echo</tt>来显示的。</p><p>shell里有许多特别的字符代表着特别的资料,我们把叫做meta-characters。 最常用的就是<varclass="LITERAL">*</var>字符,它可代表文件名的任何字符。这些特别字符应用到文件名全域方面。假如,输入 <tt class="COMMAND">echo *</tt>和输入 <ttclass="COMMAND">ls</tt>的效果是相同的,其实就是 shell 取得了全部符合 <varclass="LITERAL">*</var>的文件名,并传给 <tt class="COMMAND">echo</tt>在命令行下显示出来。</p><p>为了防止shell去分析这些特别字符, 我们可在它之前加一个<varclass="LITERAL">\</var>字符去说明它只是普通字符。 <ttclass="COMMAND">echo$TERM</tt>就会显示出你的终端情况, 而<tt class="COMMAND">echo\$TERM</tt> 就会显示出 <tt class="ENVAR">$TERM</tt>这几个字。</p><div class="SECT2"><h2 class="SECT2"><a id="CHANGING-SHELLS" name="CHANGING-SHELLS">3.9.1.改变你用的Shell</a></h2><p>改变你的Shell的最简单方法是使用 <tt class="COMMAND">chsh</tt> 命令。 执行 <ttclass="COMMAND">chsh</tt> 将根据你设定的<tt class="ENVAR">EDITOR</tt>环境变量进入到那个编辑器,假如没有设定,就会进入<tt class="COMMAND">vi</tt>编辑器。请改变``Shell:''这行对应值。</p><p>你可使用<tt class="COMMAND">chsh</tt> 的<var class="OPTION">-s</var>选项,这样就能设置你的shell却又不用编辑器。假如你想把shell改为<tt class="COMMAND">bash</tt>可用下面的技巧。</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">chsh -s /usr/local/bin/bash</kbd></pre><p>运行<tt class="COMMAND">chsh</tt> 不加参数只编辑shell也会达到相同的效果。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 你使用的shells<span class="emphasis"><i class="EMPHASIS">必须</i></span>在<tt class="FILENAME">/etc/shells</tt> 文件里列出。 假如你从 <ahref="ports.html">ports</a>里装一个shell, 那就不用做这步了。假如你手工装一个shell,那就要手工添加进去。</p><p>举个例了子,假如你手工把 <tt class="COMMAND">bash</tt>装到 <ttclass="FILENAME">/usr/local/bin</tt>里,你还要进行这一步:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">echo &quot;/usr/local/bin/bash&quot; &gt;&gt; /etc/shells</kbd></pre><p>然后运行<tt class="COMMAND">chsh</tt>。</p></blockquote></div></div></div><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="basics-daemons.html"accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">起点</a></td><td width="33%" align="right" valign="top"><a href="editors.html"accesskey="N">前进</a></td></tr><tr><td width="33%" align="left" valign="top">守护进程,信号和杀死进程</td><td width="34%" align="center" valign="top"><a href="basics.html"accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">文本编辑器</td></tr></table></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -