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 )"
@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 .
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!