共计 1936 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章主要讲解了“linux 执行文件指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“linux 执行文件指的是什么”吧!
在 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 执行文件指的是什么”的内容了,经过本文的学习后,相信大家对 linux 执行文件指的是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!