Je voudrais comprendre ce que le nom complet du chemin signifie vraiment. J'ai un fichier dans mon répertoire personnel appelé my_script. J'ai supposé que le nom de chemin complet est ./my_script, ce qui signifie qu'il se trouve dans le dossier racine, mais je ne suis pas sûr. Quelqu'un peut-il m'éclairer s'il vous plaît à ce sujet?
Non, votre hypothèse est fausse. Le nom de chemin complet du fichier my_script
à partir de votre répertoire personnel est: /home/your_user_name/my_script
. Lorsque vous tapez ./my_script
dans le terminal, vous essayez réellement d’exécuter le script (s’il est exécutable) et il ne sera exécuté que si votre répertoire de travail actuel est /home/your_user_name/
. Pour exécuter le script, vous pouvez également utiliser le chemin complet du fichier, comme je l'ai dit, /home/your_user_name/my_script
.
On pense qu'un nom de chemin UNIX ressemble à une adresse Internet et se présente sous cette forme, ce qui entraîne une compatibilité. Le nom de chemin complet du répertoire de travail actuel peut être trouvé dans le terminal en utilisant la commande suivante:
pwd
Pour connaître le chemin complet de votre répertoire personnel, vous pouvez utiliser:
echo ~
echo $HOME
echo /home/$USER
Les trois commandes ci-dessus sont équivalentes.
Pour connaître le chemin d'accès complet d'un fichier, vous pouvez utiliser la commande readlink
. Par exemple, dans votre cas:
cd ~
readlink -f my_script
Le nom de chemin complet signifie réellement le chemin complet de ce fichier ou dossier à partir du répertoire /
du système de fichiers.
Par exemple, le chemin complet de votre script est le suivant:
/home/your_username/my_script
Ou, le chemin d'accès complet à l'exécutable grep
est
/bin/grep
En ce qui concerne le ./my_script
, le symbole .
représente le répertoire en cours. Vous dites donc "Recherchez dans le répertoire en cours un fichier ou un dossier nommé my_script".
Afin de comprendre le chemin complet, vous devez d'abord connaître le point de départ.
Le répertoire racine /
est le point de départ des systèmes d'exploitation basés sur * nix. Il contient tous les autres répertoires du système et de l'utilisateur.
Le répertoire personnel de l'utilisateur, /home/USERNAME/
ou ~/
, contient les fichiers et répertoires de l'utilisateur. Par exemple, Images, Musique, Documents, etc. Chacun de ces répertoires est référencé avec /home/USERNAME/DIRECTORY
. Par exemple, Documents se trouve à /home/USERNAME/Documents
.
Comme avec les répertoires, les fichiers sont référencés de la même manière. Par exemple, un fichier nommé my_script
situé dans le répertoire de base de l'utilisateur sosytee
peut être référencé à l'aide du chemin complet /home/sosytee/my_script
ou ~/my_script
.
Les fichiers et les répertoires peuvent être référencés/accédés en utilisant leurs chemins complets de partout dans le système. De plus, on peut y accéder en utilisant uniquement leur nom s'il se trouve dans le même répertoire. Par exemple, si l'utilisateur utilise ~/
lors de l'utilisation du terminal, il peut accéder au fichier my_script
en utilisant simplement my_script
.
De plus, on peut accéder aux répertoires et aux fichiers en utilisant uniquement leur nom, s'ils sont placés dans sa variable PATH. Vous pouvez voir ce qui est stocké dans PATH en utilisant echo $PATH
.
Exemples simples d'accès aux fichiers à l'aide de la ligne de commande:
/home/USERNAME/
et souhaite utiliser la commande cat
sur un fichier situé à /home/USERNAME/Documents
nommé foo.txt:cat Documents/foo.txt
L'utilisateur est à l'intérieur de ~/Documents
et souhaite exécuter un script nommé foo.sh
situé dans l'annonce ~/Scripts/Foo
:
sh ../Scripts/Foo/foo.sh
ou
sh ~/Scripts/Foo/foo.sh
bien sûr, ceci n’est qu’un résumé.
Plus d'informations
Guide Bash pour les débutants , par Machtelt Garrels
En savoir plus sur PATH ici
À propos de structure de répertoire Unix
Le nom de chemin complet est le chemin du répertoire racine (c'est-à-dire, /
). ./my_script
est le nom du chemin relatif, car il est donné relativement au répertoire en cours, indiqué par .
. Donc, si vous êtes dans votre répertoire personnel, le chemin complet est le même. comme /home/sosytee/my_script
. Pour votre répertoire personnel, il existe un "raccourci" ~
, ce qui signifie que vous pouvez également écrire ~/my_script
. Mais cela va bien sûr résoudre un chemin différent pour chaque utilisateur.
Pour voir le chemin complet de votre répertoire actuel, appelez pwd
.
J'ai supposé que le chemin complet est ./my_script
Non ce n'est pas. Ce chemin est relatif. Le point au début indique le répertoire en cours:
$ ls ./my_script
my_script
$ cd ..
$ ls ./my_script
ls: cannot access ./my_script: No such file or directory
Comme vous pouvez le constater, j’ai changé de répertoire et le my_script
n’a pas été trouvé, ce qui signifie que ./my_script
n’est pas un chemin absolu.
J'ai supposé que le nom de chemin complet est ./my_script, ce qui signifie qu'il se trouve dans le dossier racine, mais je ne suis pas sûr.
De la Wikipedia :
[...] Un chemin complet ou chemin absolu est un chemin qui pointe vers le même emplacement sur un système de fichiers, quel que soit le répertoire de travail ou les chemins combinés. .
Puisque le ./my_script
ne remplit pas la condition que chaque fois que je suis capable de trouver le fichier my_script
, nous devrions en déduire qu'il s'agit d'un chemin relatif.
Un chemin relatif est un chemin relatif au répertoire de travail de l'utilisateur ou de l'application. Il n'est donc pas nécessaire d'indiquer le chemin absolu complet.