Liens symboliques Linux vers des répertoires


0

J'ai créé un lien symbolique dans mon dossier personnel vers un autre répertoire:

$ pwd
/home/user1
$ ln -s /usr/local/dir/ shortcut
$ ls -l
................................... shortcut -> /usr/local/dir/
$ cd shortcut
$ pwd
/home/user1/shortcut

Je finis dans ce répertoire afin que je puisse voir tous les fichiers là-bas, mais le pwd est déroutant et pourrait causer des problèmes. Y at-il un meilleur moyen de le faire pour qu’il agisse comme un raccourci et montre réellement /usr/local/dir quand j'entre cd shortcut au lieu de montrer le nouveau chemin?



1
Je vote pour clore cette question hors sujet car elle a déjà reçu une réponse le Unix & amp; Échange de pile Linux .
G-Man

@ G-Man, s’agit-il du cas où la question recevrait une réponse ailleurs sur une question similaire, ou le PO posait-il la même question et obtenait-il une réponse sur un autre site? Les liens dans le premier commentaire renvoient à des questions plus anciennes. Le lien dans le commentaire de fermeture concerne le site plutôt qu'un message spécifique et le PO n'est pas un utilisateur. L'existence d'une réponse sur un autre site ne le rendrait pas hors sujet ici.
fixer1234

Réponses:


1

Tous les deux cd et pwd avoir des drapeaux pour utiliser la structure de répertoire physique.

CD

$ cd --help
...
  -P   use the physical directory structure without following
       symbolic links: resolve symbolic links in DIR before
       processing instances of `..'
...

par exemple

$ cd /var/tmp 
$ ln -s /home/user test 
$ cd -P test
$ pwd
/home/user

Ci-dessus, nous utilisons cd -P d'utiliser la structure de répertoire physique, maintenant pwd nous donne le chemin physique.

pwd

$ pwd
...
  -P    print the physical directory, without any symbolic links
...

par exemple

$ cd /var/tmp
$ ln -s /home/user test 
$ cd test
$ pwd
/var/tmp/test
$ pwd -P
/home/user

Ci-dessus, nous cd 'd dans le répertoire comme d'habitude, donc pwd donne le chemin symbolique. En utilisant pwd -P donnera le chemin physique.

Définir globalement dans bash

Si vous utilisez bash vous pouvez lui dire d’ignorer complètement les liens symboliques et d’utiliser la structure de répertoires physique en exécutant set -P (sténographie pour set -o physical, reportez-vous à la page de manuel `bash). Ceci est probablement possible avec d'autres coques aussi.


Cela rétablit les valeurs par défaut à chaque déconnexion. Ainsi, lors de la connexion, l'exécution de la commande donne les résultats souhaités, mais la déconnexion et le retour rétablissent les valeurs par défaut. Y a-t-il un moyen de lui rappeler le "set -P"?
prl77

1
Ah mauvaise formulation de ma part, cela ne persiste que par coquille. Vous pouvez définir ceci dans ~/.bashrc, cela sera chargé pour chaque shell interactif, puis pour être sûr qu’il soit chargé pour ssh etc ... vous pouvez le placer dans ~/.bash_profile ou courir source ~/.bashrc de ~/.bash_profile - il se peut qu’il provienne déjà de sources, en fonction de la distribution.
wayofthepie

0

Utilisez $ CDPATH

$ CDPATH=/usr/local
$ cd dir
$ pwd
/usr/local/dir

Selon ISTM, il s’agit plus d’une solution de contournement que d’une réponse réelle et peut-être même mieux à titre de commentaire.
G-Man

Je suis d'accord. La réponse de wayofthepie ci-dessus est parfaite et ce que j'espérais. Facile, global, intégré. Pas un aspect négatif à cela.
prl77
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.