Guide : Obtenir le répertoire d'un script Bash

Guide : Obtenir le répertoire d'un script Bash
Bash Script

Comprendre la récupération du répertoire de scripts Bash

Lorsque vous travaillez avec des scripts Bash, il est souvent nécessaire de connaître le répertoire dans lequel se trouve le script. Cela peut être utile pour diverses tâches, telles que la définition du répertoire de travail ou l'accès aux fichiers relatifs à l'emplacement du script.

Dans ce guide, nous explorerons comment récupérer le chemin du répertoire d'un script Bash à partir du script lui-même. Cette approche est particulièrement utile lorsque vous souhaitez que votre script fasse office de lanceur pour d'autres applications, garantissant ainsi qu'il fonctionne sur les bons fichiers.

Commande Description
readlink -f Résout le chemin complet d'un lien symbolique, fournissant le chemin absolu du script Bash.
dirname Extrait le chemin du répertoire d'un chemin de fichier donné, utilisé pour déterminer le répertoire du script.
os.path.realpath(__file__) Renvoie le chemin canonique du fichier spécifié, résolvant tous les liens symboliques en Python.
os.chdir() Remplace le répertoire de travail actuel par le chemin spécifié en Python.
abs_path($0) Fournit le chemin absolu du script en cours d'exécution en Perl.
chdir() Remplace le répertoire de travail actuel par le chemin spécifié en Perl et PHP.
system() Exécute une commande externe à partir d'un script en Perl.
exec() Exécute un programme externe à partir d'un script en PHP, remplaçant le processus actuel.

Explication détaillée du script

Les scripts fournis sont conçus pour déterminer le répertoire dans lequel ils se trouvent et modifier le répertoire de travail vers ce chemin. Ceci est utile lorsqu'un script doit opérer sur des fichiers dans son propre répertoire ou lancer d'autres applications à partir de cet emplacement. Par exemple, dans le script Bash, la commande readlink -f est utilisé pour obtenir le chemin absolu du script, et dirname extrait le répertoire de ce chemin. Puis le cd La commande remplace le répertoire de travail actuel par le répertoire du script, garantissant ainsi que les commandes suivantes fonctionnent au bon emplacement.

Dans l'exemple Python, os.path.realpath(__file__) obtient le chemin absolu du script, et os.chdir() change le répertoire de travail. Le script Perl utilise abs_path($0) pour obtenir le chemin absolu du script et chdir() pour changer de répertoire. De même, le script PHP utilise realpath(__FILE__) pour trouver le chemin du script et chdir() pour changer de répertoire. Chaque script se termine par une commande permettant de lancer une application, garantissant qu'elle s'exécute dans le contexte du répertoire du script.

Détermination du répertoire d'un script Bash

Exemple de script Bash

#!/bin/bash
# Get the directory of the script
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
echo "The script is located in: $SCRIPT_DIR"

# Change to the script's directory
cd "$SCRIPT_DIR" || exit

# Execute the application
./application

Alternative Python pour la récupération du répertoire de scripts

Exemple de script Python

#!/usr/bin/env python3
import os
import sys

# Get the directory of the script
script_dir = os.path.dirname(os.path.realpath(__file__))
print(f"The script is located in: {script_dir}")

# Change to the script's directory
os.chdir(script_dir)

# Execute the application
os.system('./application')

Script Perl pour déterminer le répertoire des scripts

Exemple de script Perl

#!/usr/bin/env perl
use Cwd 'abs_path';
use File::Basename;

# Get the directory of the script
$script_dir = dirname(abs_path($0));
print "The script is located in: $script_dir\n";

# Change to the script's directory
chdir $script_dir or die "Cannot change directory: $!";

# Execute the application
system('./application');

Script PHP pour localiser son répertoire

Exemple de script PHP

<?php
# Get the directory of the script
$script_dir = dirname(realpath(__FILE__));
echo "The script is located in: $script_dir\n";

# Change to the script's directory
chdir($script_dir);

# Execute the application
exec('./application');
?>

Méthodes alternatives pour déterminer le répertoire des scripts

Outre les méthodes mentionnées précédemment, il existe d'autres techniques pour déterminer le répertoire d'un script Bash. L'une de ces méthodes consiste à utiliser des variables d'environnement. Par exemple, le $BASH_SOURCE La variable contient le chemin du fichier du script Bash, ce qui peut être utile pour les scripts provenant d'autres scripts. Une autre approche consiste à exploiter les arguments de ligne de commande. En analysant les dix Paramètre, qui contient le nom du script en cours d'exécution, vous pouvez déterminer l'emplacement du script lorsqu'il est exécuté à partir de divers contextes, tels que des liens symboliques ou des fichiers source.

Ces méthodes alternatives peuvent offrir une flexibilité en fonction du contexte dans lequel le script est utilisé. Par exemple, lorsqu'il s'agit de liens symboliques, readlink est souvent nécessaire pour résoudre le véritable chemin du script. Comprendre ces différentes techniques garantit que vos scripts sont robustes et adaptables à divers environnements d'exécution, améliorant ainsi leur utilité et leur fiabilité.

Questions fréquemment posées

  1. Comment obtenir le répertoire d'un script en utilisant $BASH_SOURCE?
  2. Vous pouvez utiliser dirname "$(realpath "${BASH_SOURCE[0]}")" pour obtenir le répertoire du script.
  3. Quelle est la différence entre dix et $BASH_SOURCE?
  4. dix est le nom du script en cours d'exécution, tandis que $BASH_SOURCE contient le chemin complet du script source.
  5. Puis-je utiliser readlink avec des liens symboliques ?
  6. Oui, readlink -f résout le chemin complet d’un lien symbolique.
  7. Qu'est-ce que os.chdir() faire en Python ?
  8. os.chdir() remplace le répertoire de travail actuel par le chemin spécifié.
  9. Comment obtenir le chemin absolu d’un script en Perl ?
  10. En utilisant abs_path($0) du module Cwd fournit le chemin absolu du script.
  11. Quelle commande est utilisée en PHP pour exécuter un programme externe ?
  12. exec() est utilisé pour exécuter un programme externe en PHP.
  13. Comment changer de répertoire en PHP ?
  14. chdir() est utilisé pour changer le répertoire de travail actuel en PHP.
  15. Pourquoi est-ce dirname utile dans les scripts ?
  16. dirname extrait le chemin du répertoire d'un chemin de fichier donné, aidant ainsi à localiser le répertoire du script.

Réflexions finales sur la récupération du répertoire de scripts

Déterminer le répertoire d'un script Bash est une tâche cruciale pour les scripts qui doivent fonctionner sur des fichiers locaux ou lancer des applications. En utilisant des commandes comme readlink, dirname, et en tirant parti des variables d'environnement, les scripts peuvent ajuster dynamiquement leur répertoire de travail. Cette pratique garantit que le script fonctionne correctement, quel que soit l'endroit à partir duquel il est exécuté. La compréhension et la mise en œuvre de ces méthodes améliorent la flexibilité et la fiabilité de vos scripts, les rendant plus efficaces pour diverses applications et cas d'utilisation.