Chinaunix

标题: 什么样的命令是内部命令 [打印本页]

作者: liion631818    时间: 2011-04-02 12:57
标题: 什么样的命令是内部命令
1、什么样的命令是内部命令?
2、内部命令跟外部命令区别?
作者: wtuter    时间: 2011-04-02 12:58
回复 1# liion631818


    man sh这里面的就是内部命令
作者: liion631818    时间: 2011-04-02 13:00
回复 2# wtuter


    内部命令跟内建命令是等价的吗???
作者: lkk2003rty    时间: 2011-04-02 13:08
默认情况下,bash处于非POSIX模式,此时对命令的解释顺序如下:

* 关键字,例如 if、for 等。
* 别名。别名不能与关键字相同,但是可以为关键字定义别名,例如 end=fi。
* 特 殊内嵌命令,例如 break、continue 等。POSIX 定义的特殊内嵌命令包括:.(小数点)、:(冒号)、break、continue、 eval、exec、exit、export、readonly、 return、set、shift、times、trap 和 unset。 bash 又增加了一个特殊的内嵌命令 source。
* 函数。如果处于非 POSIX 模式,bash 会优先匹配函数,然后再匹配内嵌命令。
* 非特殊内嵌命令,例如 cd、test 等。
* 脚本和可执行程序。
作者: liion631818    时间: 2011-04-02 13:11
回复 4# lkk2003rty


    明白很多~~
    有非POSIX,那就有POSIX咯,bash可以转换到POSIX下吗?
作者: lkk2003rty    时间: 2011-04-02 13:15
回复 5# liion631818

男人说的 启动的时候加
    --posix
              Change  the behavior of bash where the default operation differs
              from the POSIX standard to match the standard (posix mode).
或者 set -o posix 直接把当前的改了
作者: liion631818    时间: 2011-04-02 13:18
回复 6# lkk2003rty


    非常感谢,多问问man,呵呵
作者: maluyao    时间: 2011-04-02 14:33
一般的 which 命令找不到的命令就是内部命令。
有些命令甚至既有内部命令,也有外部命令,这种情况下,默认用内部命令

例如

  1. $ which firefox
  2. /usr/bin/firefox
复制代码
这说明firefox是外部命令

  1. $ which for
  2. /usr/bin/which: no for in (/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
复制代码
这说明for  是内部命令。

kill命令是内部命令,同时还有外部命令/bin/kill,如果想指定用那个外部命令,需要执行

  1. /bin/kill  xxxx
复制代码

作者: licong_jay    时间: 2011-04-02 15:40
type command

如果返回值是 "command is a shell builtin" 则command是内部命令

内部命令执行效率比外部命令高
作者: 惟吾无为    时间: 2011-04-02 18:18
在命令行下输入help, 会显示内建命令列表及简要用法
作者: L_kernel    时间: 2011-04-02 20:19
最好还是使用type来判断。which更多的时候是知道某个命令的绝对路径。
  1. $ which for
  2. $ type -a for
  3. for is a shell keyword
复制代码

作者: L_kernel    时间: 2011-04-02 20:20
假如同时有外部命令和内部命令。结果的话,都会显示。
  1. $ type -a echo
  2. echo is a shell builtin
  3. echo is /bin/echo
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2