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 ?
Réponses
Trop de publicités?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.
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.
$ 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.
"./" 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.