如何运行linux程序

搞懂linux程序如何运行是一件重要的事情,这是为我们进一步发展打下了坚实基础的一步。本文将通过实例来详细地讲解如何运行linux程序。希望对于大家理解有帮助。部分内容参考于《linux就该这么学》,希望对大家有帮助。

操作方法

  • 01

    首先,我们从一个十分简单的例子test.sh开始吧: #!/bin/sh #this is a test. cd /tmp echo "hello,this is a test" 这是一个十分简单的程序,但是运行结果可能会让你吃惊哦!

  • 02

    这个时候,我们发现程序运行之后,并没有改变当前目录。(黑人问号???) 别着急,我们先了解一下linux程序如何运行。

  • 03

    linux程序三种执行方法 运行linux程序有三种方法,分别是: 1、使文件具有可执行权限,直接运行文件。 chmod 命令用来修改文件的权限。+x是使文件拥有可执行的权限。就如上面我们运行程序一样。但是我们看到的结果与我们想象当中有一定的出入。

  • 04

    2、直接调用命令解释器执行程序。 如下图所示: 由于我们的解释器是/bin/sh,所以,用sh命令解释器来执行程序。 我们也看到当前的工作路径没有发生变化。(黑人问号???)

  • 05

    3、使用source执行文件。 没错,这里我们发现当前的工作路径发生了变化,(黑人问号???)但是究竟为什么呢?让我们带着三个黑人问号详细了解一下linux程序究竟怎么执行。

linux程序执行的过程

  • 01

    当命令行shell执行程序时,首先判断是否该程序具有可执行权限。如果没有可执行权限,就会提示:Permission denied(权限不够) 在第一种方法中,我们直接执行文件,就先加上了可执行权限。 当命令行接收到我们的执行命令,并且判断具有可执行权限后,则调用Linux内核命令新建一个进程,在新建的进程中调用指定的命令。但是我们的test.sh不是编译型的文件,所以linux内核不知道如何执行,然后交给shell,shell就知道这是一个脚本,那么就启动一个新的shell进程来进行执行。但是linux系统有很多shell,如图:

  • 02

    我们程序第一行看到是#!/bin/sh,这时,命令行就启用一个新的bash进程来执行程序。

程序执行差异

  • 01

    在我们运行shell程序的三种方法中,前两种方法的执行过程如下: (1)父进程接收到命令,然后发现不是内建命令,于是创建了一个和自己一样的s h e l l进程,来执行这个外部命令

  • 02

    (2)这个s h e l l子进程用/bin/sh取代自己,sh进程设置自己的运行环境变量,其中包括了$PWD变量。

  • 03

    (3)sh进程依次执行内建命令cd和echo。在此过程中,sh进程(子进程)的环境变量被cd命令改变。

  • 04

    (4)子进程执行完毕,就消亡了,一直在等待的父进程醒来,继续接受命令。 所以我们明白了前两种方法执行结果跟我们预期不一样的原因,父进程的当前目录(环境变量)无法被子进程改变。 但是,使用source执行是shell脚本时不会创建子进程,而是在父进程中直接执行。至此黑人问号消失,继续加油写代码吧。

(0)

相关推荐

  • 运行linux程序的运行方式

    搞懂linux程序如何运行是一件重要的事情,这是为我们进一步发展打下了坚实基础的一步.本文将通过实例来详细地讲解如何运行linux程序.希望对于大家理解有帮助.部分内容参考于<linux就该这么 ...

  • Linux使用crontab运行Java程序定时任务代码解析

    简介 Linux中,crontab的功能是十分强大的,能够方便的调度程序的运行,甚至在很多时候能够替代程序中的定时任务. 分析 它的命令格式和主要参数如下: 命令格式 crontab [-u user ...

  • kali linux运行java程序

    我一般是在windows上运行java程序.这次在kali linux上运行java程序.在我们安装的kali linux2.0是自带了OpenJdk.所以我们不用安装JDK.也不用设置环境变量. 操 ...

  • 把Linux系统放在U盘上直接在U盘上运行Linux

    Linux以它的高效和灵活的特性深受着某些用户的喜爱,但是又不方便平时操作的习惯,如果用户不想在电脑上安装Linux系统,又想使用Linux系统的话,这里教大家一个好方法,把Linux系统放在U盘上, ...

  • 如何在Win10电脑中安装运行Linux子系统

    我们在使用win10电脑的时候,想要运行其中的Linux子系统,该怎么操作呢?今天就跟大家介绍一下如何在Win10电脑中安装运行Linux子系统的具体操作步骤.1. 首先打开电脑,进入桌面,点击左下角 ...

  • Win8运行某个程序弹出"Runtime Error"警告提示怎么办

    不知道有没有用户和小编遇到同样的问题:Win8系统下,在运行某个程序或是打开浏览器访问网页的时候,突然弹出了“runtime Error”的警告,提示“this application has req ...

  • Windows7 msinfo32命令查看后台运行的程序

    如果你是Windows 7的用户,你就可以通过一个系统内置的命令查看更多、更详细的,当前正在运行的程序,这其中就包括一部分具有“流氓软件”特质的,在后台偷偷运行的程序(进程)。 在介绍方法前,请大家对 ...

  • 用Start命令来实现在Windows XP中运行DOS程序

    在WindowsXP的命令提示符中输入:start /seperate要运行的程序,即可运行相应的DOS程序。其中参数separate的作用是在单独的内存空间启动16位程序,而用参数shared则是在 ...

  • WinPE下不用安装.NETFramework也能运行.Net程序

    在一些情况下在PE运行需要安装.NETFramework环境的程序,那么究竟在PE下能否安装它呢?如果能,又是怎么来安装呢? 其实在PE下是不用安装.NETFramework也能运行.Net程序的,相 ...