command 是一些shell的內建命令


作者:fickyou 
來源:CSDN 
原文:https://blog.csdn.net/fickyou/article/details/72911217 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

 

 

近期遇到一個比較少見的命令command,詳細如下:

command 是一些shell的內建命令
我本機使用的是dash,服務器使用的是bash,其他shell沒有測試 
- dash

user@PC:~/debug/bin/test$ ll /bin/sh
lrwxrwxrwx 1 root root 4 12月  8  2015 /bin/sh -> dash*
user@PC:~/debug/bin/test$ type command
command 是 shell 內建
1
2
3
4
bash
xl@Exdroid42:~/work/tina$ ll /bin/sh
lrwxrwxrwx 1 root root 9  4月 20 16:15 /bin/sh -> /bin/bash*
xl@Exdroid42:~/work/tina$ type command
command 是 shell 內建
1
2
3
4
command命令的作用
無視shell腳本中的“同名”函數,執行特定的命令

dash 
下面摘自man dash
     command [-p] [-v] [-V] command [arg ...]
            Execute the specified command but ignore shell functions when searching for it.
            (This is useful when you have a shell function with the same name as a builtin com‐
            mand.)

            -p     search for command using a PATH that guarantees to find all the standard util‐
                   ities.

            -V     Do not execute the command but search for the command and print the resolution
                   of the command search.  This is the same as the type builtin.

            -v     Do not execute the command but search for the command and print the absolute
                   pathname of utilities, the name for builtins or the expansion of aliases.
1
2
3
4
5
6
7
8
9
10
11
12
13
bash 
下面摘自man bash
       command [-pVv] command [arg ...]
              Run command with args suppressing the normal shell function  lookup.  Only  builtin
              commands  or  commands  found in the PATH are executed.  If the -p option is given,
              the search for command is performed using a default value for PATH that is  guaran‐
              teed  to find all of the standard utilities.  If either the -V or -v option is sup‐
              plied, a description of command is printed.  The -v option  causes  a  single  word
              indicating  the  command or filename used to invoke command to be displayed; the -V
              option produces a more verbose description.  If the -V or -v  option  is  supplied,
              the exit status is 0 if command was found, and 1 if not.  If neither option is sup‐
              plied and an error occurred or command cannot be found, the  exit  status  is  127.
              Otherwise, the exit status of the command builtin is the exit status of command.
1
2
3
4
5
6
7
8
9
10
11
測試
在test.sh中構建ls函數,測試command命令的作用

user@PC:~/debug/bin/test$ ls
test.sh

user@PC:~/debug/bin/test$ cat test.sh 
function ls()
{
    echo "haha"
}

echo "--1--"
ls

echo "--2--"
command ls

echo "--3--"
echo command ls

echo "--4--"
$(echo command ls)

user@PC:~/debug/bin/test$ ./test.sh 
--1--
haha
--2--
test.sh
--3--
command ls
--4--
test.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章