web-dev-qa-db-fra.com

comment obtenir le répertoire de script dans POSIX sh?

J'ai le code suivant dans mon script bash. Maintenant, je veux l'utiliser dans POSIX sh. Alors, comment le convertir? Merci.

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" > /dev/null && pwd )"
34
city

@City a répondu que 

DIR=$( cd -P -- "$(dirname -- "$(command -v -- "$0")")" && pwd -P )

travaux. Je l'ai utilisé aussi.
J'ai trouvé la commande à https://stackoverflow.com/questions/760110/can-i-get-the-absolute-path-to-the-cu‌ rrent-script-in-kornshell .

0
Walter A
if      OLDPWD=/dev/fd/0 \
        cd - && ls -lLidFH ?
then    cd . <8
fi      </proc/self/fd 8<. 9<$0

là. cela devrait vous permettre de changer directement d’entreprise via des liens magiques en tant que descripteurs de fichier.

paramétrer $OLDPWD pre -cd exporte la valeur pour la durée du répertoire one change (remarque: cd peut avoir des effets résiduels sur les tables hash, mais le seul sh à propos duquel je suis conscient que les hommes peuvent être utilisés à bon escient est bien Kevin - et depuis herbert xu - dash, et peut-être quelques articles bsd, mais que sais-je?) mais ne reporte aucune exportation cd à la suite du changement.

ainsi, $OLDPWD ne change pas, en fait, et s'il avait une valeur quelconque, cela reste tel quel. $PWD est modifié à la suite de la première cd et la valeur devient /dev/fd/0, qui pointe vers /proc/self/fd, où une liste de descripteurs de fichier pour notre processus doit être dans ., afin d'inclure le type de $0 sur ./2.

alors nous faisons un ls ... ? et examinons toutes les informations merveilleuses que nous pouvons obtenir, et nous allons d'où nous venons.

yay!

0
mikeserv