linux执行文件指的是什么

发布时间 - 2023-05-11 00:00:00    点击率:

在linux中,执行文件是指的是该文件可以被运行,文件有“x”权限;执行文件可以是一个代码文件(脚本文件),也可以是一个二进制文件。一个文件运行有两种方式:1、用解释器直接去运行文件;2、利用“./”运行文件,语法“./ 文件名”。

什么是可执行文件

可执行文件指的是这个文件可以被运行.这个文件可以是一个代码文件,也可以是一个二进制文件

Linux文件系统中只有文件和目录(一切皆文件).

在Linux中,运行一个文件的方式主要有两种: bash test.sh或者./test.sh.

这个test.sh就被叫做可执行文件.

可执行文件分为两种: 一种是常见的二进制文件,一种是脚本文件.前者如常用的ls,mkdir命令等都是二进制的文件,后者常见的有shell脚本,或者Python脚本这些依赖于解释器执行的文件.

通过命令file可以查看一个文件的类型,如二进制文件会显示:

而脚本文件则输出:

可执行文件的区别

在上面的两个脚本文件中可以看到,输出的内容是不同的.一个被识别为了shell script一个则认为就是普通的text文件.但是两个文件都是可执行的:

如图:两个文件运行后都会输出hello world!.

此处使用了两种不同的运行方式,第一种直接指定一个可执行文件./hello.sh,如果使用这种方式运行的话,脚本必须满足以下两个要求:

  • 文件有"x"权限

  • 文件如果不是二进制类型文件,那么在开头第一行必须指定了他的解释器

第一个就是指的Linux文件系统中的"rwx" r为只读,w代表可写,而"x"则意味着这个文件可执行.

这里判断这个文件可执行和"鸭子类型"有些类似,即只要一个动物会嘎嘎叫我就认为是鸭子.此时哪怕走过来一条狗嘎嘎叫了两声,那么也认为他是一个鸭子.
换算过去.不管文件类型是什么,只要这个文件具备"X"权限,那么系统就认为他是一个可执行文件.

示例: 新建一个text类型文件,内容为hello world!,然后添加"x"执行权限.

可以看到,查看文件类型时,他和上面Python脚本打印内容一致,认为这是个txt文件.

随后给他加上了执行权限,然后’./'运行,提示"未找到命令".

此处,系统把他当成了一个shell脚本去执行,依次从中读取内容,然后交给"/bin/bash"解释器去执行.

接下来如法炮制,将Python脚本也变成一个系统认可的可执行文件

此时,你也能用./去运行他了.

./ 表示什么?

一个文件运行有两种方式,第一种是用他的解释器直接去运行它,如:

每个解释器只能运行对应自己语法的脚本,如果用了别的解释器那么则会抛出错误,如Python解释器无法运行shell脚本.

接下来说./,点在Linux系统中表示"当前目录",而"/“就是个普通的路径分隔符,组合在一起无非就是个相对路径,如:

所以在执行一个系统认可的可执行文件的时候,./不是最重要的那部分,这个文件本身才是.比如我可以用绝对路径运行一个可执行文件:

如果连前面的/root/file/都去掉,然后删掉结尾的.py,也就是只输入"hello”,打印一个hello world!,那么这个文件似乎和Linux系统中的一个命令没什么区别了.

接下来就把他变成和ls这种命令相同的一个"命令".

  • 先把这个可执行文件重命名了

  • 接下来把他放到了 /usr/bin 目录下

  • 直接输入hello,直接打印了hello world!

这也从侧面说明,只要你把一个脚本 变成 系统承认的可执行文件,并且放到/usr/bin 目录下,他就和常用的命令没什么两样.

为什么是/usr/bin?

实际上在Linux系统中有个变量叫做PATH,这个变量中是一组路径的集合,当你输入一个命令的时候(如ls),他就在这个变量的内容中给出的目录里,寻找是否有对应名称的文件,然后运行它.

所以,如果我能把当前目录也加入到这个变量中,那么当前目录下的文件也就可以直接被系统运行而不需要指定路径.

如果一个文件没有"x"属行,那么即便是丢到了/usr/bin目录下也无法执行.

一般很少会直接声明PATH变量,对这个变量操作时也会将其写入到~/.bashrc目录或者/etc/profile这两个环境变量的文件中,这样,在会话连接上来之后就会自动运行里面的内容,将这个目录加入到PATH变量中.


# linux  # Python  # bash  # 子类  # 可执行文件  # 是一个  # 把他  # 都是  # 有两种  # 是个  # 可执行  # 目录下  # 他就  # 两种 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 长沙企业网站制作哪家好,长沙水业集团官方网站?  高端网站建设与定制开发一站式解决方案 中企动力  Laravel如何处理异常和错误?(Handler示例)  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  如何在服务器上配置二级域名建站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  网站制作软件免费下载安装,有哪些免费下载的软件网站?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  如何自定义建站之星模板颜色并下载新样式?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  Laravel如何处理和验证JSON类型的数据库字段  简单实现Android验证码  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  浅述节点的创建及常见功能的实现  Android滚轮选择时间控件使用详解  如何快速搭建虚拟主机网站?新手必看指南  如何在建站主机中优化服务器配置?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  简单实现jsp分页  Swift开发中switch语句值绑定模式  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Laravel如何实现API资源集合?(Resource Collection教程)  如何在万网开始建站?分步指南解析  WordPress 子目录安装中正确处理脚本路径的完整指南  详解Android——蓝牙技术 带你实现终端间数据传输  网站页面设计需要考虑到这些问题  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  公司门户网站制作流程,华为官网怎么做?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  网易LOFTER官网链接 老福特网页版登录地址  企业网站制作这些问题要关注  如何在新浪SAE免费搭建个人博客?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Linux网络带宽限制_tc配置实践解析【教程】  如何在云虚拟主机上快速搭建个人网站?  如何快速重置建站主机并恢复默认配置?  JavaScript Ajax实现异步通信  如何打造高效商业网站?建站目的决定转化率  如何在万网自助建站平台快速创建网站?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】