Linux 命令优先级 —— alias、function、内部命令(make)

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

原文地址:http://blog.51cto.com/muyusen/2327747

时间: 2024-10-07 21:34:37

Linux 命令优先级 —— alias、function、内部命令(make)的相关文章

Linux编程 10 (shell外部命令与内建命令,alias ,type命令)

一.  内部命令 Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但也有些细微差别.内部命令不需要使用子进程来执行,它们已经和shell编译成一体,作为shell工具的组成部分存在.不需要借助外部程序文件来运行.它们是一些比较简单的linux系统命令,如exit,history,cd,echo等. 要分区是外部命令还是内部命令可以使用type  来查看,如下图查看cd是内部还是外部命令: 1.1命令别名 alias 命令也是一个内建命令,允许你为常用的命令和参

linux下使用alias和PS1命令

一.实验环境: 安装了Red Hat Enterprise Linux 6.0 可运行系统,并且是成功验证系统.有另外一个无特权用户student,密码student 的账户存在. 二.实验要求: 1.使用alias 创建别名 2.使用PS1 修改bash 的提示符 3.编写简单的shell 小程序 三.实验步骤: 创建别名c: [[email protected]~]$ alias c='clear' [[email protected]~]$ alias     alias l.='ls -

在DOS命令中输入ipconfig /all,出现“该命令不是系统内部命令......”

第一种情况:1.先去C:\Windows\System32下查找有没有 ipconfig.exe的执行文件,有的话说明系统文件没有丢失,否则要去网上下载一个 ipconfig.exe文件,并放到C:\Windows\System32下.再运行cmd下输入ipconfig /all,查电脑的ip地址. 第二种情况:1.环境变量设置有问题. 2.点击 计算机->属性->高级系统设置->环境变量,设置用户变量path的值为:     C:\windows\system32\;         

Linux中 别名、内部命令、外部命令、hash缓存表 系统调用时的优先级比较

Linux系统中别名.内部命令.外部命令.hash缓存表 优先级优先级比较 在我们平时使用Linux系统执行各种命令时,会发现命令在执行过程中会区分哪个优先执行,哪个其次执行,这里我们来做个试验证明一下. 别名:用alias命令来设置命令的别名. 内部命令:内部命令在系统启动时就调入内存,是常驻内存的. 外部命令:外部命令是系统的软件功能表现为一个文件,用户需要时才从硬盘中读入内存. hash缓存表:linux系统下会有一个hash缓存表,当你刚开机时这个hash表为空,每当你执行过一条命令时,

linux中的内部命令和外部命令

linux中的命令大致可分为两类,内部命令和外部命令 内部命令:也称shell内嵌命令: 外部命令:存放在一个文件中,使用时需要去文件中查找,这些文件被定义在$PATH [[email protected] ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin type命令可以查看命令类型,以区别是内部命令还是外部命令 例 [[email protected] ~]# type cd cd is a

linux杂记(?)命令别名——alias

linux中的命令别名--alias linux中的命令别名--alias 1. 用命令alias可以查询系统中有哪些可用的命令别名 2.添加命令别名 回车查看, 别名建立成功 3.查询命令的地址type -a 4.取消命令别名unalias

Linux自学笔记——计算机基础以及命令帮助的获取

计算机基础知识: 计算机的主要组成部分: 运算器.控制器.存储器.输入设备.输出设备 CPU:运算器,控制器 bus:总线 memory: 编址存储设备 IO:与外部部件交互 程序的运行模式: 用户空间:user space,us 内核空间:system space POS:Portable OperationSystem POSIX API:编程接口: 运行程序格式: Windows:EXE,dll(dynamic link library) Linux:ELF,so(shared objec

Bash 中同名的内部命令和外部命令

昨天有个人在 bug-bash 上问:为什么 [ --help 没有输出帮助信息.有人回答他了,原因是 coreutils 提供的 [ 命令才接受 --help 选项,Bash 自己的 [ 命令不接受任何选项.当你在 Bash 里执行 [ --help 时,当然优先执行的是内部命令 [,而不是外部命令 [,执行 /usr/bin/[ --help(在我的 Mac 上是在 /bin/[)才能获得他想要的帮助信息. 其实除了 [,还有一些其它外部命令也会和 Bash 提供的内部命令同名,下面列举一下

Linux介绍与基本必知命令

1.系统结构介绍 linux的由来 Linux操作系统是基于UNIX操作系统的, 其内核主要是由C程序编写.Linux是自由和开放的,任何组织和个人只要遵循GNU通用公共许可证协议都可以自由免费地使用Linux的所有底层源代码,并可以自由地修改和分发. 2.linux的目录结构 Linux和Windows最大的不同之处在于Linux的目录结构的设计,在Linux中,任何文件,目录和设备都在根目录"/"之下.Linux把所有文件和设备都当作文件来管理,这些文件都在根目录下,同时Linux