GNU/Linux >> Linux Esercitazione >  >> Linux

Da dove viene eseguito uno script di shell?

Ho uno script di shell in /usr/bin . Chiamiamolo hello .

Contiene questo:

 echo "I am located in $PWD"
 echo "I am called from this directory: ???"

Esecuzione di hello da /home/Documents Mi aspetto il seguente output:

 I am located in /usr/bin
 I am called from this directory: /home/Documents

Come posso ottenere il percorso della directory da cui viene eseguito lo script?

Risposta accettata:

Non posso commentare un'altra risposta, quindi scrivo qui. Come detto, dirname legge solo $0 e prende il nome della directory, quindi se hai chiamato qualcosa come ../../directory/something.sh non risolve quei punti ma restituisce solo ../../directory . Invece di usare l'espansione della subshell con cd e pwd , puoi usare un comando molto intelligente readlink che in realtà risolve non solo le directory tratteggiate ma anche tutti i collegamenti simbolici. Suggerisco quindi

  echo "I am located at $(readlink -e -- "$0")"

Puoi usare un altro dirname intorno a questo per ottenere la directory invece del file.


Linux
  1. Come si esegue uno script all'accesso in *nix?

  2. Come eseguo un programma con una directory di lavoro diversa da quella corrente, dalla shell di Linux?

  3. Cambia la directory di lavoro nella shell con uno script python

  4. Come eseguire uno script di shell all'avvio

  5. Esecuzione di script da un'altra directory

Come eseguire il comando / script della shell di Linux in background

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire script Python dalla shell

Come creare ed eseguire uno script di shell in Ubuntu 22.04

Esegui uno script di shell dal comando docker-compose, all'interno del contenitore

Eseguire uno script di shell come utente diverso