Maison  >  Article  >  Qu’est-ce qu’un fichier exécutable Linux ?

Qu’est-ce qu’un fichier exécutable Linux ?

青灯夜游
青灯夜游original
2023-03-09 10:00:213315parcourir

Sous Linux, un fichier exécutable signifie que le fichier peut être exécuté et que le fichier a les autorisations "x" ; le fichier exécutable peut être un fichier de code (fichier script) ou un fichier binaire. Il existe deux manières d'exécuter un fichier : 1. Utilisez l'interpréteur pour exécuter le fichier directement ; 2. Utilisez « ./ » pour exécuter le fichier, et la syntaxe est « ./ nom de fichier ».

Qu’est-ce qu’un fichier exécutable Linux ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Qu'est-ce qu'un fichier exécutable

Un fichier exécutable signifie que ce fichier peut être exécuté. Ce fichier peut être un fichier de code ou un fichier binaire

Il n'y a que des fichiers et des répertoires dans le système de fichiers Linux (Tout. est un fichier).

Sous Linux, il existe deux manières principales d'exécuter un fichier : bash test.sh ou ./test.sh.bash test.sh或者./test.sh.

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

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

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

Qu’est-ce qu’un fichier exécutable Linux ?

而脚本文件则输出:
Qu’est-ce qu’un fichier exécutable Linux ?

可执行文件的区别

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

Qu’est-ce qu’un fichier exécutable Linux ?

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

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

  • 文件有"x"权限

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

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

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

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

Qu’est-ce qu’un fichier exécutable Linux ?

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

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

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

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

Qu’est-ce qu’un fichier exécutable Linux ?

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

./ 表示什么?

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

Qu’est-ce qu’un fichier exécutable Linux ?

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

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

Qu’est-ce qu’un fichier exécutable Linux ?

所以在执行一个系统认可的可执行文件的时候,./

Cetest.sh est appelé un fichier exécutable.

7-Qu’est-ce qu’un fichier exécutable Linux ?Les fichiers exécutables sont divisés en deux types : l'un est un fichier binaire commun et l'autre est un fichier de script. Le premier est tel que le couramment utilisé. Les commandes ls code>, <code>mkdir, etc. sont tous des fichiers binaires. Les scripts shell ou scripts Python couramment utilisés sont des fichiers qui dépendent de l'exécution de l'interpréteur

🎜Grâce à la commande file. Vous pouvez vérifier le type d'un fichier. Par exemple, un fichier binaire sera affiché : 🎜🎜Qu’est-ce qu’un fichier exécutable Linux ?🎜🎜Et le fichier de script affiche :
Qu’est-ce qu’un fichier exécutable Linux ?🎜🎜🎜🎜La différence entre les fichiers exécutables🎜🎜🎜 est visible dans les deux fichiers de script ci-dessus, le contenu de sortie est différent. L'un est reconnu comme shell script et l'autre est considéré comme un fichier texte ordinaire. Mais les deux fichiers sont exécutables : 🎜🎜Qu’est-ce qu’un fichier exécutable Linux ?🎜🎜Comme le montre la figure : les deux les fichiers seront affichés après avoir exécuté hello world!.🎜🎜Deux méthodes d'exécution différentes sont utilisées ici La première spécifie directement un fichier exécutable ./hello.sh. cette méthode pour exécuter Si tel est le cas, le script doit répondre aux deux exigences suivantes : 🎜
  • 🎜Le fichier a les autorisations "x"🎜
  • 🎜Si le fichier n'est pas un fichier de type binaire, alors son interpréteur doit être spécifié dans la première ligne au début🎜
🎜Le premier fait référence à "rwx" dans le système de fichiers Linux r. signifie lecture seule, w signifie écriture et "x" signifie que ce fichier est exécutable 🎜🎜🎜Le jugement selon lequel ce fichier est exécutable est quelque peu similaire au "type canard", c'est-à-dire tant qu'un animal cancane, Je pense que c'est un canard. Même si un chien vient et cancane deux fois, alors il est considéré comme un canard.
En d'autres termes, quel que soit le type de fichier, tant que le fichier dispose des autorisations "X". , le système le considérera comme un fichier exécutable. 🎜🎜🎜Exemple : Créez un nouveau fichier de type texte avec le contenu hello world!, puis ajoutez l'autorisation d'exécution "x".🎜🎜Qu’est-ce qu’un fichier exécutable Linux ?🎜🎜Vous pouvez le voir en visualisant le type de fichier, il est cohérent avec le contenu imprimé par le script Python ci-dessus, pensant qu'il s'agit d'un fichier txt 🎜🎜Puis il a ajouté les autorisations d'exécution, puis a exécuté './', demandant "Commande introuvable 🎜🎜Ici". , le système le traite comme un script shell à exécuter, en lit le contenu à son tour, puis le transmet à l'interpréteur "/bin/bash" pour qu'il l'exécute.🎜🎜Suivez ensuite la même méthode et transformez le script Python en exécutable fichier reconnu par le système🎜🎜Qu’est-ce qu’un fichier exécutable Linux ?🎜🎜À ce stade, vous pouvez également utiliser ./ pour l'exécuter 🎜🎜
🎜🎜./ Qu'est-ce que cela signifie 🎜🎜🎜Il y en a deux ? façons d'exécuter un fichier. La première est d'utiliser son interpréteur pour l'exécuter directement, comme : 🎜🎜Qu’est-ce qu’un fichier exécutable Linux ?🎜🎜🎜Chaque interpréteur ne peut exécuter que le script correspondant à votre propre syntaxe. Si vous utilisez un autre interpréteur, une erreur sera générée. Par exemple, le L'interpréteur Python ne peut pas exécuter le script shell. 🎜🎜🎜 Ensuite, dites ./, cliquez sur le système Linux pour signifier "répertoire actuel", et "/" est un séparateur de chemin ordinaire. n'est rien de plus qu'un chemin relatif, tel que : 🎜🎜Qu’est-ce qu’un fichier exécutable Linux ?🎜🎜Donc lors de l'exécution d'un fichier exécutable reconnu par le système, ./Ce n'est pas la partie la plus importante, le fichier lui-même l'est. Par exemple, je peux exécuter un exécutable. fichier avec un chemin absolu :🎜🎜🎜🎜

Si vous supprimez le /root/file/ précédent, puis supprimez le .py à la fin, c'est-à-dire, entrez simplement "bonjour" et imprimez un bonjour tout le monde !, alors ce fichier ne semble pas être différent d'une commande du système Linux./root/file/都去掉,然后删掉结尾的.py,也就是只输入"hello”,打印一个hello world!,那么这个文件似乎和Linux系统中的一个命令没什么区别了.

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

Qu’est-ce qu’un fichier exécutable Linux ?

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

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

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

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

为什么是/usr/bin?

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

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

Qu’est-ce qu’un fichier exécutable Linux ?

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

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

Ensuite, nous allons le transformer en une "commande" identique à ls .

Qu’est-ce qu’un fichier exécutable Linux ?

  • Renommez d'abord le fichier exécutable

  • Puis placez-le dans le répertoire /usr/bin

  • Saisissez bonjour directement et imprimez bonjour tout le monde !

  • Cela s'explique également de côté, tant que vous transformez un script en un fichier exécutable reconnu par le système et placée dans le répertoire /usr/bin, elle n'est pas différente des commandes couramment utilisées.
    🎜Pourquoi est-ce /usr/bin ?🎜🎜 En fait, il existe une variable appelée PATH dans le système Linux. Cette variable est un ensemble de chemins lorsque vous entrez une commande (comme ls), elle se trouve ici dans le répertoire indiqué dans le contenu. de la variable, recherchez un fichier avec le nom correspondant, puis exécutez-le 🎜🎜Donc, si je peux ajouter le répertoire courant à cette variable, alors les fichiers du répertoire courant peuvent être directement Le système s'exécute sans spécifier le chemin. 🎜🎜9 .png🎜🎜Si un fichier n'a pas la ligne d'attribut "x", il ne peut pas être exécuté même s'il est jeté dans le répertoire /usr/bin.🎜🎜 Généralement, la variable PATH est rarement déclarée directement lorsque. opérant sur cette variable, elle sera également écrite dans le répertoire ~/.bashrc ou dans les fichiers des deux variables d'environnement /etc/profile. connexion de session Après son apparition, le contenu à l'intérieur sera automatiquement exécuté et ce répertoire sera ajouté à la variable PATH 🎜🎜🎜🎜 Résumé 🎜🎜 Si un fichier de script a les autorisations "x" et que l'interpréteur correspondant est spécifié en premier. ligne, ou Si un fichier binaire a l'autorisation "X", alors le fichier devient un fichier exécutable reconnu par le système. À ce stade, lors de son exécution, vous pouvez non seulement spécifier le chemin absolu ou le chemin relatif, mais également l'exécuter via. son interprète, ou vous pouvez Le répertoire où il se trouve est ajouté à la variable "PATH" 🎜🎜Si un fichier de script ne répond pas aux exigences ci-dessus, vous ne pouvez l'exécuter que via son interprète, tel que "bash hello.sh. " ou " python bonjour. " py " de cette façon.🎜🎜Recommandations associées : "🎜Tutoriel vidéo Linux🎜"🎜

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Article précédent:Que signifie nano sous Linux ?Article suivant:Que signifie nano sous Linux ?