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.