一. Bash简介

命令解释器,也就是 Bourne Again Shell,起源于shell。shell俗称壳,它是指UNIX系统下的一个命令解析器;主要用于用户和系统的交互。UNIX系统上有很多种Shell。首个shell,即Bourne Shell,于1978年在V7(AT&T的第7版)UNIX上推出。后来,又演变出C shell、bash等不同版本的shell。

Bash由于易用和免费,在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell。在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为#!/bin/bash。#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。

二. 命令的优先级

1. 获取一个命令执行的优先级别,至上往下

  alias

    compound commands

      function

        build_in

          hash

            $PATH

              error:command not found

2. 命令的分类

  alias(别名):是为了简化输出给一个长参数命令的整合,别名的定义方法 alias la='ls -al' 取消别名 unalias la;

  built_in(内部命令):bash自带的命令 功能简单,内部命令的帮助在builtin(1)里;

  外部命令:就是一个小程序存在于/bin/ /sbin/ /usr/bin 等地方。

3. 命令的优先级验证

 a 验证别名优先于内部命令和外部命令

 

  结论,命令的执行搜索顺序:别名 (alias可以查看)——bash内部命令——$PATH 中按冒号分割的每个路径中去搜索
  b 验证别名优先于复合命令(compound command)

  c 验证复合命令优先于函数(function)

  d 验证函数优先于内置命令

  结论,命令的执行搜索顺序:别名 (alias可以查看)——复合命令——函数——bash内部命令——$PATH 中按冒号分割的每个路径中去搜索

  e 验证hash优先于$PATH

  最终验证结论为:命令的执行搜索顺序:别名 (alias可以查看)——复合命令——函数——内置命令——bash内部命令——$PATH 中按冒号分割的每个路径中去搜索

参考资料

1. http://www.cnblogs.com/linhaifeng/p/6592572.html#_labelTop

2. http://www.cnblogs.com/skywang12345/archive/2013/05/30/3106570.html#a12

Linux基础之-Bash命令优先级的更多相关文章

  1. linux基础之bash特性

    linux基础之bash特性 1.命令历史 命令历史包含的环境变量 $HISTSIZE:命令历史记录的条数 $HISTFILE:命令历史文件~/.bash_history $HISTFILESIZE: ...

  2. Linux基础知识与命令1(su passwd)

    一.Linux的基本原则 1.linux由一个个目的单一的小程序组成,我们一般需要组合小程序来完成复杂的任务 2.Linux的一切都是文件(文件类似于一棵树,包括外设,接口) 3.Linux尽量避免捕 ...

  3. 《Linux基础知识及命令》系列分享专栏

    <Linux基础知识及命令>系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂.本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级 ...

  4. Linux基础之bash shell介绍及基本特性

    今天继续讲Linux基础知识,内容是关于bash shell的.分享以下bash shell的相关知识,例如基本特性等.  1.8)bash shell的介绍 1.8.1)什么是bash shell ...

  5. linux 基础知识及命令总结

    1.mkdir   创建目录 -p 创建多级目录  mkdir -p /data/test -m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask -p, ...

  6. 【Linux基础】tr命令替换和删除字符

    1.tr命令 tr可以对来自标准输入的字符进行替换.压缩和删除,可以将一组字符变成另外一组字符.通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其 ...

  7. Linux之整理bash命令类型

    作业四:整理bash命令类型,验证寻找一个命令的优先级 类型 ==> alias ==> Compound Commands ==> function ==> build_in ...

  8. Linux基础知识和命令

    1,用户登录:    root(管理员),权限最大.安全生产必要时再使用.    普通用户:权限有限.2,    终端终端设备终端:输入和输出设备,如:键盘鼠标显示器;     图形终端:虚拟机进入窗 ...

  9. 后端程序员必备的 Linux 基础知识+常见命令(近万字总结)

    大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 今天这篇文章中简单介绍一下一个 Java 程序员必知的 Linux 的一些概念以及常见命令. 如果文章有任何需要 ...

随机推荐

  1. Java非静态代码块和静态代码块

    类中存在两种特殊的代码块,即非静态代码块和静态代码块,前者是直接由 { } 括起来的代码,而后者是由 static{ } 括起来的代码. 非静态代码块在类初始化创建实例时,将会被提取到类的构造器中执行 ...

  2. Angular material mat-icon 资源参考_Maps

    ul,li>ol { margin-bottom: 0 } dt { font-weight: 700 } dd { margin: 0 1.5em 1.5em } img { height: ...

  3. python2.x提示这个错误:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position

    查了好久下面这个方法可用: 发现应该是因为python2.x的默认编码是ascii,而代码中可能由utf-8的字符导致,解决方法是设置utf-8. 找到出错的文件,在import后增加下面几行: #! ...

  4. python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

  5. Sql2008R2 日志无法收缩解决方案

    在网上查了二天资料,终于找到个解决了这个问题的方案,记录下来.方便下次处理.    解决方案转贴自:  https://blog.csdn.net/kk185800961/article/detail ...

  6. java的值传递

    java中都是值传递 如果参数是引用类型的,实际上是把引用地址复制了一份传递 例如 User user = new User(); user存放在栈中,里面存放着内存地址,new User()会在堆中 ...

  7. 食品生鲜调料代理分销拼团商城微信小程序

    食品生鲜调料代理分销拼团商城微信小程序 现在小程序越来越火爆了,一种新的分销拼团模式出现了.一起来分享一下吧 调料商城是一家是专业从事各种调料生产和网上调料商品销售平台,是藤椒油.花椒油.香油.火锅油 ...

  8. vscode用yuml画类图

    vscode用yuml画类图 最近在找画类图的工具,发现vscode一款插件很好用,还支持markdown.vscode插件中直接搜索yuml安装即可. 文件后缀.yuml. 文件开头第一行这样写// ...

  9. Netstat 的 10 个基本用法

    Netstat 简介 Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字. ...

  10. 【温故知新】C#基于事件的异步模式(EAP)

    在开发winform和调用asp.net的web service引用的时候,会出现许多命名为 MethodNameAsync 的方法. 例如: winform的按钮点击 this.button1.Cl ...