Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Worauf bezieht sich die ausführbare Linux-Datei?

Worauf bezieht sich die ausführbare Linux-Datei?

王林
王林nach vorne
2023-05-11 20:58:112143Durchsuche

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“.

Was ist eine ausführbare Datei? Eine ausführbare Datei bedeutet, dass diese Datei ausgeführt werden kann. Diese Datei kann eine Codedatei oder eine Binärdatei sein. Es gibt nur Dateien und Verzeichnisse (alles) im Linux-Dateisystem Alle Dateien).

Unter Linux gibt es hauptsächlich zwei Möglichkeiten, eine Datei auszuführen: 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可以查看一个文件的类型,如二进制文件会显示:

Worauf bezieht sich die ausführbare Linux-Datei?

而脚本文件则输出:
Worauf bezieht sich die ausführbare Linux-Datei?

可执行文件的区别

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

Worauf bezieht sich die ausführbare Linux-Datei?

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

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

  • 文件有"x"权限

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

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

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

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

Worauf bezieht sich die ausführbare Linux-Datei?

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

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

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

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

Worauf bezieht sich die ausführbare Linux-Datei?

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

./ 表示什么?

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

Worauf bezieht sich die ausführbare Linux-Datei?

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

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

Worauf bezieht sich die ausführbare Linux-Datei?

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

Worauf bezieht sich die ausführbare Linux-Datei?

如果连前面的/root/file/都去掉,然后删掉结尾的.py,也就是只输入"hello”,打印一个hello world!ausführbare Linux-Datei Was bedeutet das

🎜Und die Skriptdatei gibt Folgendes aus:
Was ist eine ausführbare Linux-Datei?🎜🎜🎜Der Unterschied zwischen ausführbaren Dateien🎜🎜🎜Wie Sie in den beiden Skriptdateien oben sehen können, ist der Ausgabeinhalt unterschiedlich. Einer davon ist erkannt als Shell-SkriptEine wird als gewöhnliche Textdatei betrachtet, aber beide Dateien sind ausführbar:🎜🎜Worauf verweist die ausführbare Linux-Datei?“ />🎜🎜Wie im Bild gezeigt: Nach dem Ausführen beider Dateien wird <code>hello world!</code> ausgegeben.🎜🎜 Hier werden zwei verschiedene Ausführungsmodi verwendet. Der erste gibt direkt eine ausführbare Datei <code>./hello.sh</code> an. Wenn das Skript auf diese Weise ausgeführt wird, muss es die folgenden zwei Anforderungen erfüllen: 🎜<ul class=
  • 🎜Die Datei hat die Berechtigung „x“🎜
  • Wenn es sich bei der Datei nicht um eine Binärdatei handelt, muss ihr Interpreter in der ersten Zeile am Anfang angegeben werden🎜
  • ul>🎜Das erste bezieht sich auf „rwx“ im Linux-Dateisystem, w bedeutet beschreibbar und „x“ bedeutet, dass die Datei ausführbar ist 🎜🎜🎜Hier urteilen wir ob die Datei ausführbar ist und „Ententyp“ ist etwas ähnlich, das heißt, solange ein Tier quaken kann, denke ich, dass es eine Ente ist. Selbst wenn zu diesem Zeitpunkt ein Hund vorbeigeht und zweimal quakt, dann denke ich Es ist eine Ente.
    Nach der Konvertierung betrachtet das System die Datei unabhängig vom Dateityp als ausführbare Datei, solange sie über „X“-Berechtigungen verfügt. 🎜🎜🎜Beispiel: Erstellen Sie einen neuen Text Geben Sie eine Datei mit dem Inhalt hello world! ein und fügen Sie dann „x“Ausführungsberechtigung hinzu.🎜🎜Auf was bezieht sich die Linux-Ausführungsdatei🎜 🎜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🎜🎜Worauf verweist eine ausführbare Linux-Datei🎜 🎜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.: 🎜🎜Worauf verweist die ausführbare Linux-Datei🎜🎜🎜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: 🎜🎜Worauf verweist eine ausführbare Linux-Datei🎜🎜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: 🎜🎜Worauf verweist die ausführbare Linux-Datei?🎜🎜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这种命令相同的一个"命令".

    Worauf bezieht sich die ausführbare Linux-Datei?

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

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

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

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

    为什么是/usr/bin?

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

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

    Worauf bezieht sich die ausführbare Linux-Datei?

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

    一般很少会直接声明PATH变量,对这个变量操作时也会将其写入到~/.bashrc目录或者/etc/profile

    Was ist die ausführbare Linux-Datei?🎜
    • 🎜Benennen Sie zuerst die ausführbare Datei um🎜 li>
    • 🎜Als nächstes , legen Sie es in das Verzeichnis /usr/bin🎜
    • 🎜Geben Sie hello direkt ein und drucken Sie 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.🎜

      Warum ist es /usr/bin?

      🎜Tatsächlich gibt es im Linux-System eine Variable namens PATH. Diese Variable enthält eine Reihe von Pfaden Wenn Sie einen Befehl eingeben (z. B. ls), wird in dem im Inhalt dieser Variablen angegebenen Verzeichnis nach einer Datei mit dem entsprechenden Namen gesucht und diese dann ausgeführt. 🎜🎜Wenn ich also das aktuelle Verzeichnis hinzufügen kann, wird es auch hinzugefügt Wenn Sie diese Variable verwenden, können die Dateien im aktuellen Verzeichnis direkt vom System ausgeführt werden, ohne einen Pfad anzugeben.🎜🎜Worauf verweist die ausführbare Linux-Datei?“ />🎜<blockquote>🎜Wenn eine Datei keine „x“-Attributzeile hat, kann sie nicht ausgeführt werden, selbst wenn sie in das Verzeichnis /usr/bin geworfen wird 🎜</blockquote>🎜 Im Allgemeinen wird die PATH-Variable selten direkt deklariert. Bei der Bearbeitung dieser Variablen wird sie auch in das Verzeichnis <code>~/.bashrc</code> oder <code>/etc/profile geschrieben </code >In den Dateien dieser beiden Umgebungsvariablen wird der Inhalt automatisch ausgeführt, nachdem die Sitzung verbunden ist, und dieses Verzeichnis wird der PATH-Variablen hinzugefügt.🎜

    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!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen