GNU/Linux >> Tutoriels Linux >  >> Linux

Obtenir le chemin complet depuis le script Bash ?

J'ai un script bash qui fonctionne avec des chemins relatifs. Il doit avoir un répertoire de travail égal au répertoire dans lequel le script est stocké. Cela fonctionne bien tant que je le démarre à partir de l'invite, car je peux d'abord accéder au répertoire du script. Cependant, lorsque je crée un lien symbolique vers le script dans /etc/cron.hourly, le script se brise.

J'ai besoin d'un moyen de faire en sorte que le script bash change de répertoire dans le répertoire dans lequel le script est stocké. Cependant, jusqu'à présent, je n'ai pas réussi. Existe-t-il un moyen simple de le faire, même si le script est appelé depuis cron via un lien symbolique ?

Réponse acceptée :

Vous devriez pouvoir le faire.

  • Le paramètre $0 se développe au chemin complet (y compris le nom) du script tel qu'il a été appelé.
  • La fonction shell intégrée test (ou [ ] ) peut tester si un chemin est un lien symbolique en utilisant -L
  • ls -l , s'il est appliqué à un lien symbolique, donnera une seule ligne de sortie avec le vrai chemin comme champ final.

Cela vous suffit pour découvrir l'emplacement de la source. Bien sûr, cela pourrait être un lien symbolique, ce qui vous obligerait à le faire de manière récursive…


Linux
  1. Option Rsync inconnue à partir de l'exécution du script Bash ?

  2. Comment obtenir le chemin complet d'un fichier ?

  3. Exécuter le script bash à partir de l'URL

  4. Comment trouver le chemin complet du programme Linux C++ de l'intérieur ?

  5. Ajouter un script bash au chemin

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Pourquoi ne puis-je pas utiliser Cd dans un script Bash ? ?

D'où est exécuté un script Shell ?

Ouvrir Vim depuis un script shell Bash

Comment obtenir le répertoire absolu d'un fichier dans bash ?

Afficher uniquement le nom du répertoire actuel (pas le chemin complet) à l'invite bash