Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >Worauf bezieht sich die ausführbare Linux-Datei?
Unter Linux bedeutet eine ausführbare Datei, dass die Datei ausgeführt werden kann und die Datei über „x“-Berechtigungen verfügt; die ausführbare Datei kann eine Codedatei (Skriptdatei) oder eine Binärdatei sein. Es gibt zwei Möglichkeiten, eine Datei auszuführen: 1. Verwenden Sie den Interpreter, um die Datei direkt auszuführen. 2. Verwenden Sie „./“, um die Datei auszuführen. Die Syntax lautet „./ Dateiname“.
bash test.sh
oder ./test.sh
.Dieser test.sh
wird als ausführbare Datei bezeichnet. Ausführbare Dateien werden in zwei Typen unterteilt: Eine ist eine allgemeine Binärdatei und die andere ist eine Skriptdatei , mkdir
-Befehle usw. sind allesamt Binärdateien. Häufig verwendete Shell-Skripte oder Python-Skripte sind Dateien, die von der Ausführung des Interpreters abhängig sind /code> Sie können den Typ einer Datei überprüfen. Beispielsweise wird eine Binärdatei angezeigt: 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!
Shell-Skript
Eine wird als gewöhnliche Textdatei betrachtet, aber beide Dateien sind ausführbar:🎜🎜hello world!
ein und fügen Sie dann „x“Ausführungsberechtigung hinzu.🎜🎜🎜 🎜Wenn Sie den Dateityp überprüfen, können Sie sehen, dass er mit dem vom Python-Skript oben gedruckten Inhalt übereinstimmt und davon ausgeht, dass es sich um einen TXT handelt 🎜🎜Dann habe ich die Ausführungsberechtigung hinzugefügt und dann „./“ ausgeführt, was zur Meldung „Befehl nicht gefunden“ führte. 🎜🎜Hier behandelt das System es als auszuführendes Shell-Skript und liest der Reihe nach den Inhalt daraus. und übergibt es dann zur Ausführung an den „/bin/bash“-Interpreter 🎜🎜Folgen Sie dann der gleichen Methode und wandeln Sie das Python-Skript in eine vom System genehmigte ausführbare Datei um🎜🎜🎜 🎜An dieser Stelle können Sie zum Ausführen auch ./
verwenden 🎜🎜🎜./ Was bedeutet das? 🎜🎜🎜Es gibt zwei Möglichkeiten, eine Datei auszuführen. Die erste besteht darin, sie direkt auszuführen, z. B.: 🎜🎜🎜🎜🎜Jeder Interpreter kann nur Skripte ausführen, die seiner eigenen Syntax entsprechen. Wenn andere Wenn Interpreter verwendet werden, wird ein Fehler ausgegeben. Der Python-Interpreter kann beispielsweise keine Shell-Skripte ausführen. 🎜🎜🎜 Als nächstes sprechen wir über /
, Punkt bedeutet „aktuelles Verzeichnis“ im Linux-System „/“ ist ein gewöhnliches Pfadtrennzeichen. In Kombination ist es nichts anderes als ein relativer Pfad, wie zum Beispiel: 🎜🎜🎜🎜Wenn also eine vom System erkannte ausführbare Datei ausgeführt wird, ist ./ nicht der wichtigste Teil, sondern der Datei selbst ist. Beispielsweise kann ich eine ausführbare Datei mit einem absoluten Pfad ausführen: 🎜🎜🎜🎜Wenn Sie auch nur den vorherigen /root/file/
entfernen, löschen Sie die Endung .py
, geben Sie einfach „Hallo“ ein und geben Sie einen hello world!
aus, dann scheint sich diese Datei nicht von einem Befehl im Linux-System zu unterscheiden.🎜Als nächstes wandeln Sie es in einen „Befehl“ um, der mit ls
identisch ist.ls
这种命令相同的一个"命令".
先把这个可执行文件重命名了
接下来把他放到了 /usr/bin 目录下
直接输入hello,直接打印了hello world!
这也从侧面说明,只要你把一个脚本 变成 系统承认的可执行文件,并且放到/usr/bin 目录下,他就和常用的命令没什么两样.
实际上在Linux系统中有个变量叫做PATH,这个变量中是一组路径的集合,当你输入一个命令的时候(如ls),他就在这个变量的内容中给出的目录里,寻找是否有对应名称的文件,然后运行它.
所以,如果我能把当前目录也加入到这个变量中,那么当前目录下的文件也就可以直接被系统运行而不需要指定路径.
如果一个文件没有"x"属行,那么即便是丢到了/usr/bin目录下也无法执行.
一般很少会直接声明PATH变量,对这个变量操作时也会将其写入到~/.bashrc
目录或者/etc/profile
hello world!
🎜🎜Das wird auch angezeigt Solange Sie ein Skript in eine vom System erkannte ausführbare Datei umwandeln und im Verzeichnis /usr/bin ablegen, unterscheidet es sich nicht von häufig verwendeten Befehlen.🎜
Das obige ist der detaillierte Inhalt vonWorauf bezieht sich die ausführbare Linux-Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!