# fi.1

BUILTIN(1)

BUILTIN(1)

FreeBSD General Commands Manual

BUILTIN(1)

## [名称](#__u540D___u79F0_)

`内置`, `!`, `%`, `.`, `:`, `@`, `[`, `{`, `}`, `alias`, `alloc`, `bg`, `bind`, `bindkey`, `break`, `breaksw`, `builtins`, `case`, `cd`, `chdir`, `command`, `complete`, `continue`, `default`, `dirs`, `do`, `done`, `echo`, `echotc`, `elif`, `else`, `end`, `endif`, `endsw`, `esac`, `eval`, `exec`, `exit`, `export`, `false`, `fc`, `fg`, `filetest`, `fi`, `for`, `foreach`, `getopts`, `glob`, `goto`, `hash`, `hashstat`, `history`, `hup`, `if`, `jobid`, `jobs`, `kill`, `limit`, `local`, `log`, `login`, `logout`, `ls-F`, `nice`, `nohup`, `notify`, `onintr`, `popd`, `printenv`, `printf`, `pushd`, `pwd`, `read`, `readonly`, `rehash`, `repeat`, `return`, `sched`, `set`, `setenv`, `settc`, `setty`, `setvar`, `shift`, `source`, `stop`, `suspend`, `switch`, `telltc`, `test`, `then`, `time`, `times`, `trap`, `true`, `type`, `ulimit`, `umask`, `unalias`, `uncomplete`, `unhash`, `unlimit`, `unset`, `unsetenv`, `until`, `wait`, `where`, `which`, `while` —

shell 内置命令

## [概要](#__u6982___u8981_)

请参阅相应 shell 手册页中的内置命令描述。

## [描述](#__u63CF___u8FF0_)

Shell 内置命令是可以在运行的 shell 进程中执行的命令。请注意，在 csh(1) 内置命令的情况下，如果该命令作为管道中除最后一个以外的任何组件出现，则该命令将在子 shell 中执行。

如果指定给 shell 的命令包含斜杠 ‘`/`’, 则 shell 将不会执行内置命令，即使指定命令的最后一个组件与内置命令的名称匹配。因此，虽然指定 “`echo`” 会导致在支持 `echo` 内置命令的 shell 下执行内置命令，但指定 “`/bin/echo`” 或 “`./echo`” 不会。

*

虽然某些内置命令可能存在于多个 shell 中，但在支持它们的每个 shell 下它们的操作可能不同。下表列出了 shell 内置命令、支持它们的标准 shell 以及它们是否作为独立实用程序存在。

此处仅列出 csh(1) 和 sh(1) shell 的内置命令。有关其内置命令的操作的详细信息，请参阅 shell 的手册页。请注意，至少 sh(1) 手册页将其中一些命令称为 “内置命令” ，其中一些称为 “保留字 。” 其他 shell 的用户可能需要查阅 info(1) 页面或其他文档来源。

在 *External* 下标记为 “`No**`” 的命令确实存在于外部，但使用同名的内置命令作为脚本实现。

*Command*

*External*

csh(1)

sh(1)

[`!`](#!)

No

No

Yes

[`%`](#_)

No

Yes

No

[`.`](#.)

No

No

Yes

[`:`](#:)

No

Yes

Yes

[`@`](#@)

No

Yes

No

[`[`](#__2)

Yes

No

Yes

[`{`](#__3)

No

No

Yes

[`}`](#__4)

No

No

Yes

[`alias`](#alias)

No\*\*

Yes

Yes

[`alloc`](#alloc)

No

Yes

No

[`bg`](#bg)

No\*\*

Yes

Yes

[`bind`](#bind)

No

No

Yes

[`bindkey`](#bindkey)

No

Yes

No

[`break`](#break)

No

Yes

Yes

[`breaksw`](#breaksw)

No

Yes

No

[`builtin`](#builtin)

No

No

Yes

[`builtins`](#builtins)

No

Yes

No

[`case`](#case)

No

Yes

Yes

[`cd`](#cd)

No\*\*

Yes

Yes

[`chdir`](#chdir)

No

Yes

Yes

[`command`](#command)

No\*\*

No

Yes

[`complete`](#complete)

No

Yes

No

[`continue`](#continue)

No

Yes

Yes

[`default`](#default)

No

Yes

No

[`dirs`](#dirs)

No

Yes

No

[`do`](#do)

No

No

Yes

[`done`](#done)

No

No

Yes

[`echo`](#echo)

Yes

Yes

Yes

[`echotc`](#echotc)

No

Yes

No

[`elif`](#elif)

No

No

Yes

[`else`](#else)

No

Yes

Yes

[`end`](#end)

No

Yes

No

[`endif`](#endif)

No

Yes

No

[`endsw`](#endsw)

No

Yes

No

[`esac`](#esac)

No

No

Yes

[`eval`](#eval)

No

Yes

Yes

[`exec`](#exec)

No

Yes

Yes

[`exit`](#exit)

No

Yes

Yes

[`export`](#export)

No

No

Yes

[`false`](#false)

Yes

No

Yes

[`fc`](#fc)

No\*\*

No

Yes

[`fg`](#fg)

No\*\*

Yes

Yes

[`filetest`](#filetest)

No

Yes

No

[`fi`](#fi)

No

No

Yes

[`for`](#for)

No

No

Yes

[`foreach`](#foreach)

No

Yes

No

[`getopts`](#getopts)

No\*\*

No

Yes

[`glob`](#glob)

No

Yes

No

[`goto`](#goto)

No

Yes

No

[`hash`](#hash)

No\*\*

No

Yes

[`hashstat`](#hashstat)

No

Yes

No

[`history`](#history)

No

Yes

No

[`hup`](#hup)

No

Yes

No

[`if`](#if)

No

Yes

Yes

[`jobid`](#jobid)

No

No

Yes

[`jobs`](#jobs)

No\*\*

Yes

Yes

[`kill`](#kill)

Yes

Yes

Yes

[`limit`](#limit)

No

Yes

No

[`local`](#local)

No

No

Yes

[`log`](#log)

No

Yes

No

[`login`](#login)

Yes

Yes

No

[`logout`](#logout)

No

Yes

No

[`ls-F`](#ls-F)

No

Yes

No

[`nice`](#nice)

Yes

Yes

No

[`nohup`](#nohup)

Yes

Yes

No

[`notify`](#notify)

No

Yes

No

[`onintr`](#onintr)

No

Yes

No

[`popd`](#popd)

No

Yes

No

[`printenv`](#printenv)

Yes

Yes

No

[`printf`](#printf)

Yes

No

Yes

[`pushd`](#pushd)

No

Yes

No

[`pwd`](#pwd)

Yes

No

Yes

[`read`](#read)

No\*\*

No

Yes

[`readonly`](#readonly)

No

No

Yes

[`rehash`](#rehash)

No

Yes

No

[`repeat`](#repeat)

No

Yes

No

[`return`](#return)

No

No

Yes

[`sched`](#sched)

No

Yes

No

[`set`](#set)

No

Yes

Yes

[`setenv`](#setenv)

No

Yes

No

[`settc`](#settc)

No

Yes

No

[`setty`](#setty)

No

Yes

No

[`setvar`](#setvar)

No

No

Yes

[`shift`](#shift)

No

Yes

Yes

[`source`](#source)

No

Yes

No

[`stop`](#stop)

No

Yes

No

[`suspend`](#suspend)

No

Yes

No

[`switch`](#switch)

No

Yes

No

[`telltc`](#telltc)

No

Yes

No

[`test`](#test)

Yes

No

Yes

[`then`](#then)

No

No

Yes

[`time`](#time)

Yes

Yes

No

[`times`](#times)

No

No

Yes

[`trap`](#trap)

No

No

Yes

[`true`](#true)

Yes

No

Yes

[`type`](#type)

No\*\*

No

Yes

[`ulimit`](#ulimit)

No\*\*

No

Yes

[`umask`](#umask)

No\*\*

Yes

Yes

[`unalias`](#unalias)

No\*\*

Yes

Yes

[`uncomplete`](#uncomplete)

No

Yes

No

[`unhash`](#unhash)

No

Yes

No

[`unlimit`](#unlimit)

No

Yes

No

[`unset`](#unset)

No

Yes

Yes

[`unsetenv`](#unsetenv)

No

Yes

No

[`until`](#until)

No

No

Yes

[`wait`](#wait)

No\*\*

Yes

Yes

[`where`](#where)

No

Yes

No

[`which`](#which)

Yes

Yes

No

[`while`](#while)

No

Yes

Yes

## [参见](#__u53C2___u89C1_)

csh(1), echo(1), false(1), info(1), kill(1), login(1), nice(1), nohup(1), printenv(1), printf(1), pwd(1), sh(1), test(1), time(1), true(1), which(1)

## [历史](#__u5386___u53F2_)

`内置` 手册页首次出现在 FreeBSD 3.4 中。

## [作者](#__u4F5C___u8005_)

本手册页由 Sheldon Hearn 编写 <<sheldonh@FreeBSD.org> <。>>

December 21, 2010

FreeBSD 13.1-RELEASE


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://man.bsdcn.org/man1/fi.1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
