Réponses:
Sous Linux, UNIX et les systèmes d'exploitation associés, .désigne le répertoire actuel. Puisque vous voulez exécuter un fichier dans votre répertoire actuel et que ce répertoire ne se trouve pas dans votre $PATH, vous avez besoin du ./bit pour indiquer au shell où se trouve l'exécutable. Donc, ./foosignifie exécuter le fichier exécutable appelé fooqui se trouve dans ce répertoire.
Vous pouvez utiliser typeou whichpour obtenir le chemin complet de toutes les commandes trouvées dans votre $PATH.
aliases qui peuvent gêner, pas seulement $PATH.
.premier, il s'agirait d'un problème de sécurité. Vous ou une autre personne pourriez lspar exemple le remplacer (un simple virus / trojen: créez un fichier zip avec un exécutable nommé ls, pendant que quelqu'un effectue une recherche. , ils exécutent cet exécutable, ça…). Si la recherche a été effectuée en .dernier, vous pouvez passer beaucoup de temps à devenir fou en ne sachant pas pourquoi votre programme ne fonctionne pas (par exemple, vous créez un programme appelé test, au lieu d'exécuter votre programme, il exécute le programme de test du système. Ce qui ne produit aucun résultat).
export PATH="$PATH:."pour exécuter une commande dans le répertoire en cours s’il n’est pas trouvé ailleurs dans PATH, vous pouvez l’ajouter dans votre fichier .bashrc
La réponse littérale est la même que celle donnée par d’autres: parce que le répertoire actuel n’est pas dans votre $PATH.
Mais pourquoi En bref, c'est pour la sécurité. Si vous cherchez dans le répertoire personnel de quelqu'un (ou / tmp), et tapez juste gccou ls, vous voulez savoir que vous utilisez le vrai, pas une version malicieuse que votre ami farceur a écrite et qui efface tous vos fichiers. Un autre exemple serait testou [, qui pourrait remplacer ces commandes dans des scripts de shell, si votre shell n'en contient pas.
Avoir .comme dernière entrée sur votre chemin est un peu plus sûr, mais il y a d'autres attaques qui l'utilisent. Une solution simple consiste à exploiter les fautes de frappe courantes, comme slou ls-l. Vous pouvez également rechercher une commande commune qui n'est pas installée sur ce système vim, par exemple, car les administrateurs système ont une probabilité supérieure à la moyenne de la taper.
PATHvariable d'environnement.
Si vous voulez dire, pourquoi avez-vous besoin de ./ au début - c'est parce que (contrairement à Windows), le répertoire actuel ne fait pas partie de votre chemin par défaut. Si vous courez:
$ ls
votre shell cherche lsdans les répertoires de votre variable d'environnement PATH ( echo $PATHpour la voir) et exécute le premier exécutable appelé lsqu'il trouve. Si vous tapez:
$ a.out
le shell fera de même - mais il ne trouvera probablement pas d’exécutable appelé a.out. Vous devez dire au shell où se trouve a.out - si c'est dans le répertoire en cours (.) Puis le chemin est ./a.out.
Si vous demandez pourquoi il s'appelle "a.out", c'est simplement le nom du fichier de sortie par défaut pour gcc. Vous pouvez le changer avec l'argument de ligne de commande -o. Par exemple:
$ gcc test.c -o test
$ ./test
touch .a.out; ls -lAde voir ça.)
<dir>/<file>vous dites donc essentiellement exécuter un fichier dans le répertoire actuel, ce qui est indiqué par./test
Vous pouvez essayer d’ajouter :.à votre variable $ PATH.
Essayez ALT + F2 et tapez: gksudo gedit /etc/environmentsi vous utilisez Linux / GTK (c'est ce que vous avez si vous utilisez Ubuntu).
Cependant, je vous déconseille vivement de le faire. C'est mauvais, mauvais, mauvais.
Vous savez, ce genre de choses fonctionne de la sorte depuis 1970. Il y a une raison pour laquelle le répertoire actuel n'est pas inclus dans le $ PATH.
. est le répertoire courant
.somethingserait un fichier caché (tapez "ALT +" pour les faire apparaître dans Nautilus, ou essayez " ls -la".
./someProgram.sh est ce que vous tapez pour exécuter un exécutable someProgram.sh dans le répertoire en cours.
.somethingElse signifierait que vous avez un exécutable caché dans le répertoire en cours, ce qui est une mauvaise idée.
./command_namepour exécuter une commande sous Linux?"