Quelle est la signification de ./ avant un chemin donné?

25

On m'a dit de faire ça:

./yiic message ./app/messages/config.php

Mais je ne comprends pas le ./sens, quelqu'un peut-il clarifier s'il vous plaît.

Remarque: croyez-moi, nous ne pouvons pas google cela. J'ai essayé:

./ sens ./ ubuntu

C'était la même chose que rien. :(

MEM
la source
3
Dans ces cas, le mieux est de rechercher une "barre oblique", qui a donné ce résultat très utile: linfo.org/dot_slash.html
heltonbiker

Réponses:

29

./ou .est simplement un raccourci unix pour le répertoire courant.

Vous devez le spécifier lorsque le répertoire actuel n'est pas dans votre PATH. Le CHEMIN est la liste des dossiers recherchés lorsque vous exécutez un programme. (Vous pouvez le déterminer en écrivant echo $PATH.) Si un fichier exécutable n'est pas dans votre PATH, pour l'exécuter, vous devez spécifier le dossier dans lequel il se trouve. Vous pouvez le faire en donnant le chemin d'accès complet au fichier, mais si le fichier est dans le répertoire courant, vous pouvez l'utiliser ./comme raccourci.

De même, ../ou ..est simplement un raccourci pour le répertoire au-dessus du répertoire actuel.

frabjous
la source
17
Quelqu'un devrait inclure dans sa réponse pourquoi $ PATH ne contient pas .. C'est parce que l'utilisation automatique du répertoire actuel est une faille de sécurité. Imaginez que quelqu'un d'autre crée un programme, le nomme lset vous cddans son répertoire, puis tapezls
Zan Lynx
1
@Zan Je me suis toujours posé cette question, merci pour votre réponse à la question que personne n'a posée, mais que quelqu'un aurait dû avoir.
crasic
@ZanLynx excellent commentaire / ajout, il devrait être modifié dans la réponse car les commentaires peuvent être perdus.
NSGaga
15

Chaque répertoire de la ligne de commande a deux "répertoires spéciaux" appelés .et ... Ce sont des raccourcis pour, respectivement, le répertoire courant et le répertoire contenant le répertoire courant.

Ainsi, par exemple, cd ./more/directory/namessignifie simplement «commencez dans le répertoire actuel et continuez dans le chemin». De même, la commande cd ..signifie «changer un répertoire vers le haut.

Si vous voulez le nom de votre répertoire actuel, vous pouvez utiliser la pwdcommande. De plus, si vous utilisez l' -aindicateur pour ls, vous pouvez voir ces deux répertoires spéciaux. Autrement dit, ls -aaffichera une liste commençant par .et ...

Kris Harper
la source
excellent ajout root45 +1 :)
Rinzwind
4

D'autres ont déjà expliqué ce .que cela ..signifie (répertoire courant et répertoire parent respectivement). Cela s'applique à tous les noms de chemin.

Lorsque vous ouvrez un terminal, vous commencez généralement dans votre répertoire personnel: ~(qui se développe en /home/username). Les chemins ci-dessous sont tous équivalents, à condition que votre répertoire de travail actuel soit /home/username:

  • /home/username
  • .
  • ../username
  • ../../home/username
  • ../../../home/username(le répertoire parent de /est toujours /)
  • ./././././. (le répertoire courant dans le répertoire courant dans le ...)
  • ./ (les barres obliques de fin sont autorisées pour les répertoires)
  • /home////username/// (tout comme les barres obliques multiples)

Ne confondez pas./program avec . program. ./programexécute un fichier dans le répertoire en cours avec le bit d'exécution défini. . ./programest une chose bash et peut également être écrite comme source ./programlisant les commandes bash du programfichier dans le répertoire courant et les exécutant dans le shell courant.

Si vous vous demandez pourquoi vous pouvez simplement exécuter à la geditplace de /usr/bin/geditet non à la programplace de ./programou /home/username/program, consultez la question connexe:

Lekensteyn
la source
3

Cela signifie partir du current directory path.

Supposons que vous en ayez un pathcomme ceci:

/usr/ /usr/bin/ /usr/local/bin

et à l'intérieur /usr/bin/il y a un exécutable appelé yiic.

Si vous émettez, yiiccelui-ci démarre /usr/bin/.

En émettant, ./yiicvous dites au système de regarder à l'intérieur du répertoire courant pour cet exécutable.

Rinzwind
la source
D'accord ... mais je ne comprends toujours pas. Disons que j'ai yiic à l'intérieur /home/mysuser/et que j'y navigue en utilisant cd /home/myuser. Une fois à l'intérieur, je pensais que faire juste du yiic, ça devrait marcher parce que j'ai appelé depuis ce répertoire. Mais il dit que la commande n'est pas un fichier. Si je fais de même, et que j'utilise le ./ alors, il fonctionne correctement ... Pouvez-vous clarifier un peu plus?
MEM
@frabjous as a également répondu à ce commentaire.
MEM
Nan! il cherchera toujours dans la directive PATH, sauf si vous lui dites d'utiliser le répertoire courant (en utilisant ./). Regardez la réponse de user45: .est un fichier spécial dans un dossier que vous pouvez voir lorsque vous faites un ls -ladans le répertoire;)
Rinzwind