一.  内部命令

  Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但也有些细微差别。内部命令不需要使用子进程来执行,它们已经和shell编译成一体,作为shell工具的组成部分存在。不需要借助外部程序文件来运行。它们是一些比较简单的linux系统命令,如exit,history,cd,echo等。

  要分区是外部命令还是内部命令可以使用type  来查看,如下图查看cd是内部还是外部命令:
    

  1.1命令别名

    alias 命令也是一个内建命令,允许你为常用的命令和参数创建另一个名称,从而减少输入。在系统中已经设置好了一些常用的命令的别名。查看当前可用的别名使用alias -p如下图所示:
    

    下面通过alias 命令来创建属于自己的别名。把ls -li 长列表命令参数改别名为li。
    

    一但定义好了别名就可以随时在shell中使用,但要注意的是只有在当前进程中才有效。下面演示在子shell中使用别名无效,只有退出子shell才行。
    
    

二.外部命令

  外部命令是存在于bash shell之外的程序,它们不是shell程序的一部分,外部命令程序通常位于/bin, /usr/bin, /sbin, /usr/sbin中。 ps就是一个外部命令,使用type查看如下所示:
    

  所有外部命令都会被一个子进程来执行。ps的父进程是bash shell PID 2486,如下所示:
    

  2.1 使用type的小技巧
    当命令是外部命令时,type还会显示外部命令所在路径,如下图,查看service和ps的路径:
    
    根据路径提示,可以找到命令所在目录,如找service命令如下所示:
    
  

  总结:这篇介绍的两种不同类型的命令:内部命令和外部命令。外部命令会创建出一个包含全新环境的子进程,而内部命令则不会。

Linux编程 10 (shell外部命令与内建命令,alias ,type命令)的更多相关文章

  1. Linux - Bash shell的功能;内建命令type

    命令编修能力 (history): bash 的功能里头,相当棒的一个就是『他能记忆使用过的命令!』 这功能真的相当的棒!因为我只要在命令列按『上下键』就可以找到前/后一个输入的命令!而在很多 dis ...

  2. Linux编程 22 shell编程(输出和输入重定向,管道,数学运算命令,退出脚本状态码)

    1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容, ...

  3. Linux编程 21 shell编程(环境变量,用户变量,命令替换)

    一.概述 这篇介绍shell的变量使用,跟其实语言一样,都有声明变量,使用变量,在shell中变量允许你临时地将信息存储中shell脚本中,以便和脚本的其他命令一起使用. 1.1 环境变量 在前面章节 ...

  4. linux 学习10 shell 基础

    10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

  5. Linux编程 20 shell编程(shell脚本创建,echo显示信息)

    一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell ...

  6. Linux编程 9 (shell类型,shell父子关系,子shell用法)

    一. shell类型 1.1  交互式 bin/ shell程序 当用户登录到某个虚拟控制台终端或是在GUI中启动终端仿真器时,默认的shell程序就会开始运行.系统启动什么样的shell程序取决于你 ...

  7. Unity3d 网络编程(一)(Unity3d内建网络Network介绍)

    首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库. RakNet.所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封 ...

  8. Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)

    一.概述 在上一篇里讲到了shell脚本,shell按照命令在脚本中出现的顺序依次进行处理,对于顺序操作已经足够了,但许多程序要求对shell脚本中的命令加入一些逻辑流程控制,这样的命令通常叫做 结构 ...

  9. Linux编程 24 shell编程(结构化 if [ condition ] 数值比较,字符串比较)

    一.概述 接着上篇讲的结构化命令,最后讲到了test命令的另一种写法 if [ condition ],它的语法格式如下: --格式如下: if [ condition ] then commands ...

随机推荐

  1. GitHub 使用说明

    GitHub使用教程 附件是Github 使用说明: GitHub使用说明.pdf 目录 1      注册帐户... 2 2      登录帐户... 2 3      创建仓库... 2 4    ...

  2. dubbo入门学习 一SOA

    SOA是什么?SOA全英文是Service-Oriented Architecture,中文意思是中文面向服务编程,是一种思想,一种方法论,一种分布式的服务架构(具体可以百度). 用途:SOA解决多服 ...

  3. eclipse新建servers时选中tomcat版本后next是灰色的解决

    有时在编辑器里删除server后就不能重新new了,因为不能点next. 试了下面的方法,可以用. 1.退出2.到[工程目录下]/.metadata/.plugins/org.eclipse.core ...

  4. Rabbimq 安装过程,还有踩得坑!centos 安装

    一 .安装erlang 1 添加yum 源,在/etc/yum.repos.d 下添加 rabbitmq-erlang.repo,内容如下 # In /etc/yum.repos.d/rabbitmq ...

  5. LCD_FSMC

    /************************************************************************** * 文件名:LCD_FSMC.h * * 编写人 ...

  6. roadhog如何支持除development和production外的其他环境变量配置

    roadhog的build和start脚本分别对应了env/development和production,但实践中存在第三种开发环境(可能是预发或集成测试),配置和前两种也都不一样,但现在似乎没办法支 ...

  7. Codeforces831D Office Keys

    D. Office Keys time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  8. SVN设置全局忽略提交文件或者目录

    在目录中右击选择TortoiseSVN -> 设置 -> 常规设置 -> 全局忽略样式 修改全局忽略样式(可以设置忽略的文件或者目录,以空格隔开):*.o *.lo *.la *.a ...

  9. 在码云(gitee)上展开程序类课程教学

    码云主要提供了源代码管理(Git/SVN)功能,最近又推出了高校版让普通老师也能利用起来以供教学使用. 学生与老师不仅能利用其管理代码,更重要的是我们的程序教学能通过对git的使用来引入业界流行的软件 ...

  10. vs2012升级vs2017后的一些坑

    异常信息:未能加载文件或程序集"System.Web.Helpers... 未能加载文件或程序集"System.Web.Helpers, Version=2.0.0.0, Cult ...