Com trobar el directori on es troba un script Bash des de l'script

Com Trobar El Directori On Es Troba Un Script Bash Des De L Script



Quan es treballa amb scripts bash, és útil conèixer la ubicació de l'script. Això pot ser especialment útil quan es treballa amb camins de fitxers relatius o quan s'intenta executar altres scripts o ordres des de l'script. En aquest article, donarem una ullada a algunes maneres diferents de determinar el directori d'un script bash des del mateix script.

Com trobar el directori on es troba un script Bash des de l'script

Durant l'escriptura de bash, és possible que necessiteu la ubicació de l'script per automatitzar diverses tasques. Hi ha dos tipus de camins a Linux:

  • Camí dels familiars: Relatiu és el directori de treball actual.
  • Camí absolut: Aquesta és la ruta completa del directori i els fitxers.

Una de les maneres més habituals de determinar la ubicació d'un script bash és utilitzar el pwd comandament. El pwd comandament ( imprimir el directori de treball) mostrarà el directori actual.







Per tant, en moltes situacions simplement utilitzant pwd L'ordre no funciona, ja que només proporciona la ruta del directori de treball actual.



Per exemple, si el guió es troba al fitxer Descàrregues directori i s'està executant des del Escriptori aleshores la sortida contindrà /home/usr/Desktop no és la ubicació del fitxer d'script bash /home/usr/Descàrregues .



Aquest tutorial tracta d'obtenir la ruta del directori on es troba el fitxer de l'script bash des de l'script.





Com obtenir la ruta del directori on es troba el fitxer d'script Bash

Una altra manera de determinar el directori d'un script Bash és utilitzar el dirname comandament. El dirname L'ordre pren una ruta de fitxer com a argument i retorna la part del directori de la ruta.

Usar dirname per determinar el directori d'un script, cridaríeu a l'ordre amb el camí fins als últims components sense barra a l'script com a argument.



Per a més detalls sobre dirname executeu les ordres següents al terminal:

$ home dirname

Només dirname no funcionarà, necessitem una altra comanda que sigui readlink . El readlink l'ordre print va resoldre l'enllaç simbòlic. Obteniu més informació sobre aquesta ordre executant:

$ home readlink

Ara, crear un guió :

$ sudo nano myScript.sh

I escriviu:

#!/bin/bash

eco 'La ruta de l'script bash és $(dirname -- '$(readlink -f - '$0') ' ; ) ';

Per executar l'script, utilitzeu:

$ xoc myScript.sh

Canviem el directori i veiem quina és la sortida:

Nota: En un cas, l'script anterior no funcionarà si el fitxer s'obté en lloc d'executar-se, com es pot veure a la sortida següent:

La sortida és /home/sam/Desktop mentre que el fitxer d'script està present al fitxer /home/sam directori.

Conclusió

En conclusió, hi ha diverses maneres de determinar el directori d'un script bash des del mateix script. El dirname conjuntament amb readlink La utilitat es pot utilitzar per determinar el directori d'un script. No obstant això, simplement utilitzant pwd L'ordre no funciona ja que només proporciona el directori de treball actual.