Come trovare la directory in cui uno script bash si trova all'interno dello script

Come trovare la directory in cui uno script bash si trova all'interno dello script
Quando si lavora con gli script bash, è utile conoscere la posizione della sceneggiatura. Questo può essere particolarmente utile quando si lavora con i percorsi dei file relativi o quando si tenta di eseguire altri script o comandi all'interno dello script. In questo articolo, daremo un'occhiata a diversi modi per determinare la directory di uno script bash dall'interno dello script stesso.

Come trovare la directory in cui uno script bash si trova all'interno dello script

Mentre gli script bash potrebbero richiedere la posizione dello script per automatizzare varie attività. Esistono due tipi di percorsi in Linux:

  • Path di parenti: Il parente è l'attuale directory di lavoro.
  • Percorso assoluto: Questo è il percorso completo della directory e dei file.

Uno dei modi più comuni per determinare la posizione di uno script bash è usare il PWD comando. IL PWD comando (Stampa Directory di lavoro) Mostrerà la directory corrente.

Quindi, in molte situazioni semplicemente usando PWD Il comando non funziona in quanto dà solo il percorso della directory di lavoro attualmente.

Ad esempio, se lo script è in Download directory ed essere eseguito dal Desktop quindi l'output conterrà il file /home/usr/desktop non la posizione del file di script bash che è /home/usr/download.

Questo tutorial consiste nel ottenere il percorso della directory in cui si trova il file di script bash dall'interno dello script.

Come ottenere il percorso della directory in cui si trova il file di script bash

Un altro modo per determinare la directory di uno script bash è usare il dirname comando. IL dirname Il comando prende un percorso del file come argomento e restituisce la parte della directory del percorso.

Usare dirname comando per determinare la directory di uno script, si chiama il comando con il percorso fino agli ultimi componenti non slash allo script come argomento.

Per maggiori dettagli su dirname eseguire i seguenti comandi nel terminale:

$ Man Dirname

Soltanto dirname non funzionerà, abbiamo bisogno di un altro comando che è readlink. IL readlink Il comando stampato ha risolto il collegamento simbolico. Ottieni maggiori informazioni su questo comando eseguendo:

$ man readlink

Ora, Crea uno script:

$ sudo nano myscript.sh

E tipo:

#!/Bin/Bash
echo "The Bash Script Path is $ (dirname -" $ (readlink -f - "$ 0") ";)";

Per eseguire l'uso dello script:

$ Bash MyScript.sh

Cambiamo la directory e vediamo qual è l'output:

Nota: In un caso lo script sopra non funzionerà se il file viene fornito invece di eseguire in quanto può essere visto nel seguente output:

L'output è /home/sam/desktop mentre il file di script è presente in /Home/Sam directory.

Conclusione

In conclusione, ci sono diversi modi per determinare la directory di uno script bash dall'interno dello script stesso. IL dirname insieme a readlink l'utilità può essere utilizzata per determinare la directory di uno script. Tuttavia, semplicemente usando PWD Il comando non funziona in quanto fornisce solo la directory di lavoro attualmente.