100 votes

Pourquoi dois-je taper `./` avant d'exécuter un programme dans le répertoire courant ?

Pendant l'exécution d'un programme C, a.out en utilisant le terminal Ubuntu, pourquoi dois-je toujours taper ./ antes de a.out au lieu d'écrire simplement a.out ? Existe-t-il une solution à ce problème ?

1voto

mook765 Points 11801

En plus des autres réponses, voici la partie essentielle de man bash qui l'explique bien :

COMMAND EXECUTION
       After a command has been split into words, if it results  in  a  simple
       command  and  an  optional list of arguments, the following actions are
       taken.

       If the command name contains no slashes, the shell attempts  to  locate
       it.   If  there  exists a shell function by that name, that function is
       invoked as described above in FUNCTIONS.  If the name does not match  a
       function,  the shell searches for it in the list of shell builtins.  If
       a match is found, that builtin is invoked.

       If the name is neither a shell function nor a builtin, and contains  no
       slashes,  bash  searches  each element of the PATH for a directory con
       taining an executable file by that name.

0voto

Slytink Points 101

Un './' a un sens lorsque vous exécutez un programme connu et spécifique, par exemple le vôtre. Ce programme doit être présent dans votre répertoire courant. Un './' n'a aucun sens lorsque vous exécutez une commande standard qui se trouve quelque part dans le $PATH. Une commande 'which command-to-run' vous indique où se trouve la commande à exécuter dans le $PATH.

0voto

Jon Kiparsky Points 101
$ gcc hello.c -o /path/to/someplace/hello

produira un exécutable à un certain endroit. Si cet emplacement se trouve sur votre chemin, vous serez en mesure d'exécuter le fichier. Vous pouvez script ceci si vous voulez créer une étiquette pour l'action "compiler ce code source en utilisant le gcc et placer un exécutable à un certain emplacement qui est sur votre chemin".

Je vous suggère de créer un nouveau répertoire appelé "testbin" ou quelque chose de ce genre et de le placer dans votre chemin d'accès afin de garder vos répertoires existants propres.

0voto

user175959 Points 1

./ élimine la recherche inutile d'un chemin. ./ forcer la recherche dans le répertoire courant uniquement. Si on ne donne pas ./ puis il cherchera divers chemins définis dans le système comme /usr/bin , /usr/sbin/ etc.

0voto

Khaled Moustafa Points 84

"./" signifie que vous voulez exécuter un fichier dans le répertoire courant ; c'est un raccourci pour taper le chemin complet par exemple :

[root@server ~]#/path/to/file/file.pl

est identique à :

[root@server file]#./file.pl

Dans l'exemple précédent, vous avez parcouru le répertoire et ses sous-répertoires jusqu'à l'emplacement du fichier et utilisé "./" pour exécuter le fichier dans le répertoire courant.

celui qui le précède " [root@server ~]#/path/to/file/file.pl L'option " exécuter le fichier " permet également d'exécuter le fichier si vous avez la flemme de " cd " pour vous rendre à l'emplacement du fichier.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X