Me gustaría recuperar el nombre absoluto del archivo de script que se está ejecutando actualmente. Los enlaces también deben resolverse.
En Linux, esto parece hacerse así:
$(readlink -mn "$0")
pero readlink
parece funcionar de manera muy diferente en Mac OS X.
He leído que esto se hace usando
$(realpath $0)
en BSD pero eso tampoco funciona. Mac OS X no tiene realpath
.
¿Alguna idea?
Respuestas:
Hago trampa y uso perl para esto:
Uno pensaría que simplemente escribiría todo el guión en perl, y a menudo lo hago, pero no siempre.
fuente
fuente
unset -v CDPATH
antes del CD, ya que el CD puede causar una salida no deseada si se establece CDPATH.scriptDir=$(unset -v CDPATH; cd "$(dirname "$(readlink "$BASH_SOURCE" || echo "$BASH_SOURCE)")" && pwd -P)
Esto maneja combinaciones de enlaces simbólicos, y funciona en archivos y carpetas:
Pero no admite realpath's --relative-to. Esto requeriría la conversión descrita aquí .
fuente
Otro enfoque:
fuente