En Bash, hacer que el directorio del script sea el directorio de trabajo

Usar el siguiente código:

#!/bin/bash
cd $(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)

Aunque en otras shells UNIX/OS X/Linux podría funcionar con:

cd $(cd -P -- "$(dirname -- "$0")" && pwd -P)

En Bash se usa ${BASH_SOURCE[0]} en lugar de $0 para que la ruta siga siendo correcta cuando se invoque desde otro fuente (source/.).

El guión doble (-) marca el final de las opciones del comando, de esta forma no dará error al procesar archivos que contengan guiones u otros caracteres especiales.

Si es un entorno controlado normalmente funcionará con el siguiente código más sencillo:

#!/bin/bash
cd "$(dirname "$0")"

También se propone otra opción usando Parameter Expansions:

#!/bin/bash
cd "${0%/*}"

pero parece que no funciona si se ejecuta desde el mismo directorio. Nunca lo he usado.

Otras citas
  • Cualquier tonto inteligente puede hacer cosas más grandes, más complejas y más violentas. Se necesita un toque de genialidad, y mucho valor, para moverse en la dirección opuesta.
  • Dad crédito a las obras y no a las palabras.

  • Algunos piensan que conocen a todos, cuando en realidad no se conocen a sí mismos.

  • Somos lo que hacemos de forma repetida. La excelencia, entonces, no es un acto, sino un hábito.
  • Prefiero una locura que me entusiasme a una verdad que me abata.

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *