Directorio de trabajo incorrecto, si el script bash se abre haciendo doble clic

Escribí un script bash para comenzar directamente eclipse desde diferentes lugares de trabajo. Cada lugar de trabajo contiene el script, después de ejecutarlo, eclipse se inicia con el set de espacio de trabajo respectivo.

#!/bin/bash # relative path #ECLIPSE_DIR='../../' ECLIPSE_DIR='/Users/mike/Development/java/' ECLIPSE="${ECLIPSE_DIR}eclipse/eclipse.app" AUTHOR='mike' # current directory is workspace WORKSPACE=`pwd` echo "WORKSPACE = $WORKSPACE" # start eclipse from current directory #open -n $ECLIPSE --args -data $WORKSPACE -vmargs -Duser.name='$AUTHOR' 

El script está funcionando, cuando lo ejecuto desde la terminal. Pero cuando hago doble clic en él, utiliza el directory de inicio como directory de trabajo y, por lo tanto, no se eclipsa desde el directory que contiene el script.

Aparentemente los scripts se ejecutan desde ~/. , que es la causa de mi problema ¿Qué puedo hacer para arreglar esto? ¿O cómo puedo cambiar mi script para get el comportamiento deseado?

One Solution collect form web for “Directorio de trabajo incorrecto, si el script bash se abre haciendo doble clic”

Si su script se almacena en ~/workspaces/myproject/launch.sh y desea estar en ese directory cuando lo ejecuta, cambie a ese directory, puede get el directory donde se guarda el script con este liner:

 DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 

Así que las primeras líneas de tu script se convierten en:

 #!/bin/bash DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) cd "${DIR}" ...the rest of your script... 

Esto lo colocará en el directory donde se almacena el script, sin importar cómo ejecute el script.

Si desea get más información sobre la detección de la location en el disco de un script en time de ejecución, vea esta excelente respuesta de StackOverflow .

  • despertó un directory desde la línea de command
  • ¿Cómo saber cuál es la contraseña de Wi-Fi de la networking a la que estoy conectado sin la contraseña de administrador?
  • Cómo acceder a un disco externo
  • Cómo replace todos los files de Finder con un file de marcador de position para cada
  • Cómo ocultar el nombre de la computadora y el nombre de usuario en el símbolo del sistema de la terminal
  • Comando de shell o serie de commands similar a la acción de Automator "Obtener enlaces URL de páginas web"
  • ¿Cómo deshabilitar el medio clic?
  • "-bash: ls: command no encontrado"
  • Fusionar varios files CSV sin fusionar el encabezado
  • macOS ya no reconoce environment.plist
  • ¿Cómo comienzo TextEditor desde la línea de command?
  • Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).