如果你不知道,如果你运行的是Linux命令,或者你正在使用一个bash内建的,不要紧张,这是不是所有的明显。事实上,你可以得到非常习惯像命令光盘没有意识到他们是你的外壳的一部分,不像在命令日期和我是谁该调用可执行文件(/斌/日期和在/ usr / bin中/ WHOAMI)。
在一般的内置命令是内置到外壳口译命令,和bash是特别丰富的他们来说,这是一件好事,因为内置插件由于其本身的性质跑了一下比有,当你打电话给他们,被加载到内存中的命令快发挥作用。
换句话说,一些命令内置于外壳,因为他们几乎都可以。毕竟,这样的命令光盘需要改变世界的外壳的观点 - 或至少其在文件系统上的观点。其他人提供其特殊能力,以循环壳和评估数据 - 像案件,对于和而命令。总之,这些命令使外壳什么是所有的忠实用户。还有一些人只是让命令运行快一点。
为了得到bash的内置插件的列表,你必须类型是“帮助”。
$帮助GNU的bash,版本5.0.3(1)-release下(x86_64-PC-Linux的GNU)这些shell命令内部定义。键入'帮助”看到这份名单。键入'帮助名“找出更多关于函数'名”。使用`信息庆典”更了解一般的外壳。使用`男人-k“或'信息”更了解命令找出不在此列表中。星号(*)旁边的一个名字的意思是,该命令无效。JOB_SPEC [&]历史[-c] [-D偏移] [n]或历史-an>((表达式))如果命令;然后命令;[elif的命令>。文件名[参数]工作[-lnprs] [JOBSPEC ...]或作业-x通讯>:杀[-s SIGSPEC | -n signum | -sigspec] pi> [ arg... ] let arg [arg ...] [[ expression ]] local [option] name[=value] ... alias [-p] [name[=value] ... ] logout [n] bg [job_spec ...] mapfile [-d delim] [-n count] [-O origin] [> bind [-lpsvPSVX] [-m keymap] [-f filename] [> popd [-n] [+N | -N] break [n] printf [-v var] format [arguments] builtin [shell-builtin [arg ...]] pushd [-n] [+N | -N | dir] caller [expr] pwd [-LP] case WORD in [PATTERN [| PATTERN]...) COMMAN> read [-ers] [-a array] [-d delim] [-i text]> cd [-L|[-P [-e]] [-@]] [dir] readarray [-d delim] [-n count] [-O origin]> command [-pVv] command [arg ...] readonly [-aAf] [name[=value] ...] or reado> compgen [-abcdefgjksuv] [-o option] [-A acti> return [n] complete [-abcdefgjksuv] [-pr] [-DEI] [-o op> select NAME [in WORDS ... ;] do COMMANDS; d> compopt [-o|+o option] [-DEI] [name ...] set [-abefhkmnptuvxBCHP] [-o option-name] [> continue [n] shift [n] coproc [NAME] command [redirections] shopt [-pqsu] [-o] [optname ...] declare [-aAfFgilnrtux] [-p] [name[=value] .> source filename [arguments] dirs [-clpv] [+N] [-N] suspend [-f] disown [-h] [-ar] [jobspec ... | pid ...] test [expr] echo [-neE] [arg ...] time [-p] pipeline enable [-a] [-dnps] [-f filename] [name ...> times eval [arg ...] trap [-lp] [[arg] signal_spec ...] exec [-cl] [-a name] [command [arguments ...> true exit [n] type [-afptP] name [name ...] export [-fn] [name[=value] ...] or export -> typeset [-aAfFgilnrtux] [-p] name[=value] .> false ulimit [-SHabcdefiklmnpqrstuvxPT] [limit] fc [-e ename] [-lnr] [first] [last] or fc -s> umask [-p] [-S] [mode] fg [job_spec] unalias [-a] name [name ...] for NAME [in WORDS ... ] ; do COMMANDS; don> unset [-f] [-v] [-n] [name ...] for (( exp1; exp2; exp3 )); do COMMANDS; don> until COMMANDS; do COMMANDS; done function name { COMMANDS ; } or name () { CO> variables - Names and meanings of some shel> getopts optstring name [arg] wait [-fn] [id ...] hash [-lr] [-p pathname] [-dt] [name ...] while COMMANDS; do COMMANDS; done help [-dms] [pattern ...] { COMMANDS ; }
你可能会注意到,一些内置的插件(例如,回声和杀)还存在作为可执行文件。
$ LS -l / bin中/回波/ bin中/杀-rwxr-XR-X 1根根39256 09月05日6时38分/ bin中/回波-rwxr-XR-X 1根根30952 08月08日12点46分/ bin中/杀
一个快速的方法来确定您所使用的命令是否是内置在bash与否是使用命令“命令”。是的,命令被称为“命令”。用试试吧-V(资本V)的选择是这样的:
$命令-V命令命令是内建$命令-V回波回波一个外壳内置$命令-V日期日期的壳被散列(/ bin中/日期)
当你看到一个“命令被散列”的消息像上面的,这意味着命令已被更快投入一个哈希表中查询。
寻找在其他炮弹帮助
如果您切换炮弹并尝试运行“帮助”,你会发现,一些支持这个命令和别人不一样。你可以像这样运行在bash命令即可查看每个系统上的炮弹会告诉你:
在`LS /箱壳/ * sh`做回声$ SHELL $ SHELL -c “帮助” 回声===============完成
这个循环将尝试在每个/ bin中的炮弹的运行help命令。在$ SHELL -c(例如,zsh的-C)语法将只运行在壳,然后退出单help命令。
如何告诉你目前使用的是什么壳
如果切换,你可以不依赖于$ SHELL炮弹告诉你,你目前正在使用,因为$ SHELL只是当你登录并不一定反映当前的外壳,它被设置环境变量什么壳。尝试PS -p $$代替如图在这些例子中:
$ PS -p $$ PID TTY TIME CMD 18340个PTS / 0 00:00:00的bash<==$ /斌/破折号$ PS -p $$ PID TTY TIME CMD 19517个PTS / 0 00:00:00破折号<==
内置插件是非常有用的,给每个外壳有很多的性格。如果你使用的所有的某些特定时间外壳,很容易失去跟踪其中的命令是你的shell的一部分,哪些不是。区分内置在Linux可执行外壳只需要一点点额外的努力。