1. 程式人生 > >Linux 命令優先級 —— alias、function、內部命令(make)

Linux 命令優先級 —— alias、function、內部命令(make)

內部命令 死循環 查看 保存 class envsetup cat command lan

Linux 命令優先級 —— alias、function、內部命令(make)

make

  • 新建Makefile文件,在裏面輸入如下內容;
# Makefile內容
all:
@echo "Make Command echo : Hello "
  • 保存,執行 which make ,查看make命令的位置
$ which make
/usr/bin/make
  • 執行make,查看輸出:
$ make
Make Command echo : Hello

function make

  • 新建文件envsetup.sh,在裏面輸入如下內容:
#!/bin/bash

function make(){
    echo "Function Make echo : Hello"
    make

    exit
}
  • 執行 source envsetup.sh

  • 執行make
$ make
Function Make echo : Hello
Function Make echo : Hello

……

此時可以看到,死循環了,在function make 裏面調用的還是function make

alias make

  • 在~/bin/下新建makex,輸入如下內容:
$ cat ~/bin/makex
#!/bin/bash

echo "Alias Make echo : Hello"
  • 設置別名:alias make=~/bin/makex

  • 執行make
$ make
Alias Make echo : Hello

說明:alias make 的優先級高於command make

  • 修改~/bin/makex 文件
#!/bin/bash

echo "Alias Make echo : Hello"
make
  • 執行make
$ make
Alias Make echo : Hello
Make Command echo : Hello

alias make 中可以直接調用內部命令make

  • 修改~/bin/makex
$ cat ~/bin/makex

#!/bin/bash

function make(){
    echo "Function Makex echo : Hello"
    command make
}

echo "Alias Make echo : Hello"
make
  • 執行make
$ make
Alias Make echo : Hello
Function Makex echo : Hello
Make Command echo : Hello

優先級:alias > function make > 內部命令make

function make 和 command make

  • 修改envsetup.sh文件
$ cat envsetup.sh
#!/bin/bash

function make(){
    echo "Function Make echo : Hello"
    command make
}
  • source envsetup.sh

  • 執行make
$ make
Function Make echo : Hello
Make Command echo : Hello

結果:
1、fucntion make 的優先級高於command make
2、在function 中可以調用內部make命令,但是要加上command

Linux 命令優先級 —— alias、function、內部命令(make)