Shell Builtin Command 「enable」

type enable

執行

$ type enable

顯示

enable is a shell builtin

help enable

執行

$ help enable

顯示

enable: enable [-a] [-dnps] [-f filename] [name ...]
    Enable and disable shell builtins.

    Enables and disables builtin shell commands.  Disabling allows you to
    execute a disk command which has the same name as a shell builtin
    without using a full pathname.

    Options:
      -a    print a list of builtins showing whether or not each is enabled
      -n    disable each NAME or display a list of disabled builtins
      -p    print the list of builtins in a reusable format
      -s    print only the names of Posix `special' builtins

    Options controlling dynamic loading:
      -f    Load builtin NAME from shared object FILENAME
      -d    Remove a builtin loaded with -f

    Without options, each NAME is enabled.

    To use the `test' found in $PATH instead of the shell builtin
    version, type `enable -n test'.

    Exit Status:
    Returns success unless NAME is not a shell builtin or an error occurs.

Exit Status

執行

$ enable

顯示

enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable compopt
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable mapfile
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readarray
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait

再執行

$ echo $?

顯示

0

執行範例

執行

$ type test

顯示

test is a shell builtin

執行

$ type -a test

顯示

test is a shell builtin
test is /usr/bin/test

執行

$ enable | wc -l

顯示

61

表示有61筆。

執行下面指令,將「test」disable。

$ enable -n test

然後再執行

$ enable | wc -l

顯示

60

表示有60筆。

然後再執行

$ type test

顯示

test is /usr/bin/test

表示「builtin」的「test」被關閉了,改使用「/usr/bin/test」這個檔案(指令)。

執行下面指令,列出停用的列表。

enable -n

顯示

enable -n test

執行顯示所有的列表。

$ enable -a

顯示 (注意中間有一行「enable -n test」)

enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable compopt
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable mapfile
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readarray
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable -n test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait

執行下面指令,將「test」這個「builtin」啟用。

$ enable test

執行

$ type test

顯示

test is a shell builtin

然後再執行

$ enable | wc -l

顯示

61

恢復到一開始的61筆。

其他範例

範例一

執行

for i in $(enable -a | awk '{print $2}'); do
    help $i;
    echo =====================;
done

或是執行

for i in $(enable -a | awk '{print $2}'); do help $i; echo =====================; done | less

也可以執行

$ help $(enable -a | awk '{print $2}')

範例二

執行

for i in $(enable -a | awk '{print $2}'); do
    type -a $i;
    echo =====================;
done

或是執行

for i in $(enable -a | awk '{print $2}'); do type -a $i; echo =====================; done | less

也可以執行

$ type -a $(enable -a | awk '{print $2}')

範例三

執行

for i in $(enable -a | awk '{print $2}'); do
    c=$(type -a $i | wc -l );
    if [ "$c" == "2" ]; then type -a $i; echo =====================; fi
done

顯示

[ is a shell builtin
[ is /usr/bin/[
=====================
echo is a shell builtin
echo is /bin/echo
=====================
false is a shell builtin
false is /bin/false
=====================
kill is a shell builtin
kill is /bin/kill
=====================
printf is a shell builtin
printf is /usr/bin/printf
=====================
pwd is a shell builtin
pwd is /bin/pwd
=====================
test is a shell builtin
test is /usr/bin/test
=====================
true is a shell builtin
true is /bin/true
=====================