zoukankan      html  css  js  c++  java
  • Linux基础之-Bash命令优先级

    一. 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

  • 相关阅读:
    windows命令提示符常用命令
    JAVA中定义不同进制整数
    进制转换
    win10配置jdk环境变量
    AI Gossip
    搜狗大数据总监、Polarr 联合创始人关于深度学习的分享交流 | 架构师小组交流会
    后端渲染实践——看掘金社区是如何实践的
    谢孟军:The State of Go | ECUG Con 精粹系列
    让你的 CDN 费用省 50% 以上!图片瘦身的正确姿势
    七牛云大数据平台建设实践
  • 原文地址:https://www.cnblogs.com/OldJack/p/6601420.html
Copyright © 2011-2022 走看看